ExecutorService的关闭

shutdown和awaitTermination为接口ExecutorService定义的两个方法,一般情况配合使用来关闭线程池。

shutdownnow和它的区别就不在这个文章用写了,网上搜索下都是写的这2个的区别,我也是服气了,有这么多你还写。。。

方法简介:

1.shutdown方法:平滑的关闭ExecutorService,当此方法被调用时,ExecutorService停止接收新的任务并且等待已经提交的任务(包含提交正在执行和提交未执行)执行完成。当所有提交任务执行完毕,线程池即被关闭。

2.awaitTermination方法:接收人timeout和TimeUnit两个参数,用于设定超时时间及单位。当等待时长超过设定时间时,会监测ExecutorService是否已经关闭,若关闭则返回true,否则返回false。一般情况下会和shutdown方法组合使用。加黑处仔细体会哈

具体案例:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; public class Test {
public static void main(String[] args) throws InterruptedException {
ScheduledExecutorService service = Executors.newScheduledThreadPool(4); service.submit(() -> System.out.println("完成"));
service.submit(() -> System.out.println("完成"));
service.submit(() -> {
try {
//这里睡眠3秒,而awaitTermination方法timeout为1秒,当超过1秒等待时长后,开始检测线程池是否关闭
//没关闭就会返回false
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("完成");
}
);
service.submit(() -> System.out.println("完成")); service.shutdown(); while (!service.awaitTermination(1, TimeUnit.SECONDS)) {
System.out.println("线程池没有关闭");
} System.out.println("线程池已经关闭");
}
}

代码执行结果:

最新文章

  1. 设计模式之依赖倒转原则(DIP)
  2. Jmeter从数据库获取数据当做变量,传递给其他接口
  3. android 学习第一天 了解事件机制,页面跳转等常用操作
  4. -[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000000000e3
  5. jquery笔记(基础知识)
  6. How Browsers Work: Behind the scenes of modern web browsers
  7. 多校5-MZL's Border 分类: 比赛 2015-08-05 21:28 7人阅读 评论(0) 收藏
  8. 手机页面中的meta标签
  9. (工作经验总结一二)队列--多个main的原因
  10. archlinux log 文件查看
  11. Swift - 24 - switch语句的高级用法
  12. spring整合redis客户端及缓存接口设计(转)
  13. Python: 列表注意细节与元组的基本用法
  14. 前端利器Emmet
  15. log4net架构、配置、使用
  16. Java并发控制机制
  17. Linux中断 - softirq
  18. oracle中,改变表名和字段名的大小写
  19. 【DFS】Gym - 100781A - Adjoin the Networks
  20. RtlInitUnicodeString

热门文章

  1. ATM_tests
  2. phpstorm2020.1最新版永久破解
  3. web元素定位和appium-app元素定位
  4. HP PROLIANT DL388 GEN10 (故障3019)SPP损坏
  5. Centos 打开ssh 密码验证 和 root 登录
  6. linux服务开机自启动&注册系统服务
  7. Assuming that agent dropped connection because of access permission
  8. 用percona monitoring plugins 监控mysql
  9. pandas 读写excel 操作(按索引和关键字读取行和列,写入csv文件)
  10. CTFshow-萌新赛杂项_签到