Java 可调用 : What happens to the thread before get() is called

标签 java multithreading threadpool callable

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

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

预先感谢您的回答

最佳答案

No,Thread没有被阻塞,它被归还到池中。 一般是 get() 调用线程依赖于 worker,而不是相反。因此,如果有结果,则返回它,如果没有,则等待它可用。

关于Java 可调用 : What happens to the thread before get() is called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29375272/

相关文章:

java - 计算 Java 字符串中的重复单词。奇数终端显示

java - 通知时获取非法监视器状态异常

java - 如何在Java中的所有线程中维护List的单个副本

c# - Thread Join() 导致 Task.RunSynchronously 未完成

java - 如何中断给定 Future 对象的线程?

Java 计算 C(n,k) 和带有大整数的阶乘

java - 如何以编程方式触发 EMF 模型的验证?

java - 可以从TRRS插孔录制声音吗?

java - 如何使 Java Spring 组件类线程安全?

python - 查找从客户端选择的端口的最佳方法