lgp*_*lgp 5 java multithreading
对于通过 ThreadPoolExecutor 执行的线程,是否有类似 join() 的方法?
如果我向执行器提交一些 Callables 并在它们返回的 Future 上使用 get() 方法,我会得到与 Thread.join() 类似的行为吗?
它们在某种意义上是相似的,Thread#join()并且Future#get()都会阻塞直到线程/可调用对象完成。在这种Thread#join()情况下,调用会在线程终止时返回。没有返回结果。在这种Future#get()情况下,当可调用对象完成执行其任务时,它将返回,但正在执行的线程不会死亡(它通常是线程池的一部分,因此它会让自己重新回到池中)。
如果您提交给 ExecuterService 的这些任务是关键任务,那么最好在您的应用程序中添加一个关闭钩子,调用该钩子threadPool.shutdown()以允许所有正在运行的线程正常完成,并等待threadPool.isTerminated()变为 true,或者threadPool.awaitTermination(max time before force shutdown)等待返回。
| 归档时间: |
|
| 查看次数: |
9495 次 |
| 最近记录: |