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

Java ExecutorService.shutDown()是否取消现有任务?,java,multithreading,Java,Multithreading,我正在检查ExecutorService#shutDown()方法的状态,它表示: 启动有序关机,执行以前提交的任务,但不接受新任务。如果调用已经关闭,则调用没有其他效果 我将“被执行”理解为:它等待以前提交的任务完成执行。但它也指出: 此方法不会等待以前提交的任务完成执行。使用此选项可以完成此操作 这似乎意味着它取消了已经提交的任务 有人能澄清一下当调用shutdown时会发生什么,并且以前提交的一些任务还没有完成执行吗 编辑 我使用执行器来启动一些任务,但之后我不再需要执行器,因此我想让它知

我正在检查ExecutorService#shutDown()方法的状态,它表示:

启动有序关机,执行以前提交的任务,但不接受新任务。如果调用已经关闭,则调用没有其他效果

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

此方法不会等待以前提交的任务完成执行。使用此选项可以完成此操作

这似乎意味着它取消了已经提交的任务

有人能澄清一下当调用shutdown时会发生什么,并且以前提交的一些任务还没有完成执行吗

编辑

我使用执行器来启动一些任务,但之后我不再需要执行器,因此我想让它知道,当任务完成时,它可以释放线程。

关键是,
shutDown
方法返回,而不必等待以前提交的任务完成,但它仍然允许它们完成。您可能希望将其视为一种“开始关机”方法。

这是否意味着在关机后将不执行排队的任务?假设提交了t1、t2、t3。如果在t2执行时启动关机,则t1执行,t3尚未执行。我希望t3能够执行,因为之前提交的任务已经执行了,是吗wrong@Nilesh:是的,那将被执行。但是
shutDown
方法不会在返回之前等待执行
t3