clojure里的future和promise
2015-08-02 本文已影响0人
tigerhy1
一直看到这两个名词,似乎在netty的源码里经常看到,但是并不特别清楚他们的含义,所以非常好奇。
在clojure里future,带着一个函数,和函数的参数,最后返回一个值,会在一个单独的线程中执行,会新开一个线程,而并不是虚拟线程。
promise则是运用future的一个东西,future带的函数里面会有promise值,而这个promise这个时候是没有具体值的,所以这个时候future创建的线程会阻塞。在我们delivery promise的值之后,也就是给这个promise值之后,这时候future的线程会开始执行。
从名字上理解,future返回一值,说是在不久的将来能够计算出来。promise则是future里函数带的参数,承诺在某个时间会给出具体的值,然后future创建的线程就可以工作了。
那么future和promise又有什么作用呢?我是觉得future的主要作用是创建线程。promise的作用是把多个future组合起来。