首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecutorService关机

ExecutorService关机
EN

Stack Overflow用户
提问于 2013-04-18 11:28:46
回答 2查看 4.4K关注 0票数 12

我对ExecutorService#shutdown方法的javadoc感到困惑。这不是自相矛盾的说法吗?

启动有序关机,执行以前提交的任务,但不接受任何新任务。此方法不等待以前提交的任务完成执行。使用awaitTermination来完成这个任务。

如果它能够有序地关闭以前提交的任务,那么它怎么就不能等待它们完成执行呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-18 11:32:22

这意味着该方法将在调用它的线程中立即返回,但尚未执行的任务可能仍在其他线程中运行。

如果您想让您的程序等到之前提交的任务完成,则必须在调用awaitTermination之后调用shutdown

票数 14
EN

Stack Overflow用户

发布于 2013-04-18 11:32:40

这意味着任务将运行到完成,但此方法将立即返回,而不等待这种情况发生。

因此,为了在不杀死任何任务的情况下干净地关闭执行器,您可以这样做:

代码语言:javascript
复制
executor.shutdown();
executor.awaitTermination(long timeout, TimeUnit unit);

或者,如果您只想尽快停止执行程序,请使用shutdownNow()

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16081716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档