可能有其他方法可以做到我在这里用作示例的事情,但这不是我问题的重点。
我在做这个:
(future (clojure.java.shell/sh "sleep" "3" :dir "/tmp"))
启动对shell脚本的异步调用。("sleep 3"
当然也只是一个例子)。
我想知道如果(future...)
被调用,它是否保证在某个时候一个线程将开始并执行未来的内容?
还是只有在尝试解除对未来的引用时才能保证这一点?
(我知道一旦你尝试解引用,一个总是只从开始的未来将不是很有用,但这不是我问题的重点:我想知道的是,如果它保证未来,即使没有对未来进行解引用,也保证在一个点开始[考虑到程序仍在运行])
保证将future发送给ExecutorService(到clojure.lang.Agent/soloExecutor)
并且即使您不尝试取消引用它(未来调用源),它也保证被发送。