
ExecutorService对象的shutdown()和shutdownNow()的区别
发布日期:2021-07-19 12:29:45
浏览次数:8
分类:技术文章
本文共 1044 字,大约阅读时间需要 3 分钟。
可以关闭 ExecutorService,这将导致其拒绝新任务。提供两个方法来关闭 ExecutorService。shutdown() 方法在终止前允许执行以前提交的任务,而 shutdownNow() 方法阻止等待任务启动并试图停止当前正在执行的任务。在终止时,执行程序没有任务在执行,也没有任务在等待执行,并且无法提交新任务。应该关闭未使用的 ExecutorService 以允许回收其资源。下列方法分两个阶段关闭 ExecutorService。第一阶段调用 shutdown 拒绝传入任务,然后调用 shutdownNow(如有必要)取消所有遗留的任务:
void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); // Disable new tasks from being submitted try { // Wait a while for existing tasks to terminate if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { pool.shutdownNow(); // Cancel currently executing tasks // Wait a while for tasks to respond to being cancelled if (!pool.awaitTermination(60, TimeUnit.SECONDS)) System.err.println("Pool did not terminate"); } } catch (InterruptedException ie) { // (Re-)Cancel if current thread also interrupted pool.shutdownNow(); // Preserve interrupt status Thread.currentThread().interrupt(); } }
shutdown调用后,不可以再submit新的task,已经submit的将继续执行。
shutdownNow试图停止当前正执行的task,并返回尚未执行的task的list
转载地址:https://blog.csdn.net/jdsjlzx/article/details/9079199 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2023年09月22日 19时31分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
第五节 模块
2019-03-07
第六节 使用__slots__
2019-03-07
django 第七课 Django 模型
2019-03-07
MySql 总结
2019-03-07
mysql self summary
2019-03-07
C++ 标准库读书杂记一
2019-03-07
C++ 标准库读书杂记7 Smart Pointer
2019-03-07
用Python获取英雄联盟所有皮肤图片
2019-03-07
.net core API 项目中的Swagger的简单使用
2019-03-07
8. .NET5微服务中的Apollo配置
2019-03-07
4.建造者模式(Builder Pattern)
2019-03-07
5.原型模式(Prototype Pattern)
2019-03-07
8.装饰器模式(Decorator Pattern)
2019-03-07
9.组合模式(Composite Pattern)
2019-03-07
10.外观模式(Facade Pattern)
2019-03-07
12.代理模式(Proxy Pattern)
2019-03-07
Linux里面的使用帮助
2019-03-07
JAVA入门
2019-03-07
C语言回调函数理解和使用
2019-03-07
Ubuntu构建根文件
2019-03-07