Par*_*agJ 12 java concurrency java.util.concurrent
我对ExecutorService#shutdown方法的javadoc感到困惑.这些矛盾的陈述不是吗?
启动有序关闭,其中先前提交的任务将被执行,但不会接受任何新任务.此方法不会等待先前提交的任务完成执行.使用awaitTermination来做到这一点.
如果它可以有序地关闭以前提交的任务,那么它怎么能等待它们完成执行呢?
Jes*_*per 13
这意味着该方法立即在您调用它的线程中返回,但是在其他线程中,尚未执行的任务可能仍在运行.
如果您希望程序等到先前提交的任务完成,则必须在调用awaitTermination后调用shutdown.
这意味着任务将运行完成,但此方法将立即返回,而不会等待发生.
因此,要干净地关闭执行程序而不执行任何任务,您可以:
executor.shutdown();
executor.awaitTermination(long timeout, TimeUnit unit);
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想尽快停止执行者,请使用shutdownNow().
| 归档时间: |
|
| 查看次数: |
4284 次 |
| 最近记录: |