【发布时间】:2015-11-18 02:52:48
【问题描述】:
根据documentation,当shutdown()被调用时,任何已经提交的任务(我假设通过submit()或execute)都会被执行。当shutdownNow()被调用时,执行器会停止所有等待处理的任务,并尝试停止主动执行的任务。
我想澄清的是“等待处理”的确切含义。例如,假设我有一个执行程序,我在一些 Runnable 对象上调用 execute()(假设所有这些对象都有效地忽略了中断)。我知道如果我现在调用shutdown,所有这些对象都将完成执行,无论如何。
但是,如果我此时调用shutdownNow,会不会和调用shutdown 有相同的效果?还是有些对象没有执行?换句话说,如果我希望执行程序尽快退出,我最好的选择是始终调用shutdownNow(),即使传递给执行程序的Runnables 都有效地忽略了中断?
【问题讨论】:
标签: java multithreading interrupted-exception