ExecutorService.shutDown()是否取消现有任务?

时间:2012-03-28 09:49:24

标签: java multithreading

我正在检查ExecutorService#shutDown()方法的javadoc,并说明:

  

启动有序关闭,其中先前提交的任务已执行,但不会接受任何新任务。如果已经关闭,调用没有额外的效果。

我理解“被执行”为:它等待直到先前提交的任务完成执行。但它也指出:

  

此方法不会等待先前提交的任务完成执行。使用awaitTermination来做到这一点。

似乎说它取消了已经提交的任务。

有人可以澄清调用shutdown时会发生什么,而之前提交的一些任务还没有完成执行吗?

修改
我使用执行程序来启动一些任务,但之后我不再需要执行程序,所以我想让它知道它可以在任务完成时释放线程。

1 个答案:

答案 0 :(得分:7)

关键是shutDown方法返回而不等待先前提交的任务完成,但它仍然完成。您可能希望将其视为“开始关闭”方法。