Java 可调用:在调用 get() 之前线程发生了什么

Java Callable : What happens to the thread before get() is called

更准确地说:如果我通过调用 ExecutorService 上的 submit(Callable<T> task) 方法开始异步计算(它本身是用 Executors.newCachedThreadPool() 构造的),我可以等待计算完成并检索通过调用 Future.get() 结果。

我的问题是:如果计算已经完成,在我调用 get() 之前会发生什么?在我检索结果之前线程是否被阻塞?是否存储结果并将线程分配给另一个任务?完全不同的东西?

提前感谢您的回答

不,线程没有被阻塞,它被returned到池中。 通常它是 get() 调用线程依赖于 worker,而不是相反。因此,如果有结果,return它,如果没有,等到它可用。