我正在检查ExecutorService#shutDown()方法的javadoc,并说明:
启动有序关闭,其中先前提交的任务已执行,但不会接受任何新任务。如果已经关闭,调用没有额外的效果。
我理解“被执行”为:它等待直到先前提交的任务完成执行。但它也指出:
此方法不会等待先前提交的任务完成执行。使用awaitTermination来做到这一点。
似乎说它取消了已经提交的任务。
有人可以澄清调用shutdown时会发生什么,而之前提交的一些任务还没有完成执行吗?
修改
我使用执行程序来启动一些任务,但之后我不再需要执行程序,所以我想让它知道它可以在任务完成时释放线程。
答案 0 :(得分:7)
关键是shutDown
方法返回而不等待先前提交的任务完成,但它仍然让完成。您可能希望将其视为“开始关闭”方法。