期货是否保证从一点开始?

时间:2014-06-22 02:49:06

标签: multithreading clojure future dereference

可能还有其他方法可以做我将在这里使用的例子,但这不是我的问题。

我这样做:

(future (clojure.java.shell/sh "sleep" "3" :dir "/tmp"))

启动对shell脚本的异步调用。 ("sleep 3"当然也只是一个例子。)

我想知道(future...)是否被调用,是否保证在某个时刻线程将开始并执行未来的内容?

或者只有在尝试取消引用未来时才能保证这一点吗?

(我知道,一旦你试图取消引用它总是会开始 的未来不会非常有用,但这不是我的问题:我想知道的是它是否是保证未来,即使没有对未来进行解除引用,也可以保证从一个点开始[考虑到程序仍在运行])

1 个答案:

答案 0 :(得分:1)

保证将未来发送到ExecutorService(到clojure.lang.Agent/soloExecutor

即使您不尝试取消引用它,也可以保证发送它(future-call source)。