答疑解惑之ExecutorService——shutdown方法和awaitTermination方法使用
2024-09-02 11:55:39
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("线程池已经关闭");
}
}
代码执行结果:
最新文章
- 设计模式之依赖倒转原则(DIP)
- Jmeter从数据库获取数据当做变量,传递给其他接口
- android 学习第一天 了解事件机制,页面跳转等常用操作
- -[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000000000e3
- jquery笔记(基础知识)
- How Browsers Work: Behind the scenes of modern web browsers
- 多校5-MZL's Border 分类: 比赛 2015-08-05 21:28 7人阅读 评论(0) 收藏
- 手机页面中的meta标签
- (工作经验总结一二)队列--多个main的原因
- archlinux log 文件查看
- Swift - 24 - switch语句的高级用法
- spring整合redis客户端及缓存接口设计(转)
- Python: 列表注意细节与元组的基本用法
- 前端利器Emmet
- log4net架构、配置、使用
- Java并发控制机制
- Linux中断 - softirq
- oracle中,改变表名和字段名的大小写
- 【DFS】Gym - 100781A - Adjoin the Networks
- RtlInitUnicodeString
热门文章
- ATM_tests
- phpstorm2020.1最新版永久破解
- web元素定位和appium-app元素定位
- HP PROLIANT DL388 GEN10 (故障3019)SPP损坏
- Centos 打开ssh 密码验证 和 root 登录
- linux服务开机自启动&;注册系统服务
- Assuming that agent dropped connection because of access permission
- 用percona monitoring plugins 监控mysql
- pandas 读写excel 操作(按索引和关键字读取行和列,写入csv文件)
- CTFshow-萌新赛杂项_签到