java两阶段终止线程怎么实现
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要讲解了"java两阶段终止线程怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java两阶段终止线程怎么实现"吧!一、怎么优雅地关闭
千家信息网最后更新 2025年01月18日java两阶段终止线程怎么实现一、怎么优雅地关闭一个线程?
1.错误做法
2.正确做法
这篇文章主要讲解了"java两阶段终止线程怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java两阶段终止线程怎么实现"吧!
一、怎么优雅地关闭一个线程?
在一个线程T1中如何优雅地关闭线程T2(也就是说要给T2一个机会释放持有的资源)?
1.错误做法
使用stop()方法停止线程:
stop()
方法会真正杀死线程,如果此时该线程持有锁,那么其他线程将永远无法获取锁。
使用System.exit()方法停止线程:
会让整个进程都退出
2.正确做法
思路:
代码实现:
public class Test { public static void main(String[] args) throws InterruptedException { TwoPhaseTermination twoPhaseTermination = new TwoPhaseTermination(); twoPhaseTermination.start(); Thread.sleep(3000); twoPhaseTermination.stop(); }}class TwoPhaseTermination{ // 监控线程 private Thread monitorThread; public void start(){ monitorThread = new Thread(()->{ Thread current = Thread.currentThread(); while(true){ if(current.isInterrupted()){ System.out.println("线程要关闭了..."); break; } try { Thread.sleep(1000); // 阶段1 System.out.println("监控线程正在工作...."); // 阶段2 // 如果在阶段2被打断,线程的isInterrupted标志位为true,会捕抓到信号并关闭线程 // 如果在阶段1被打断,会进入catch语句块,并且isInterrupted标志位清空,无法关闭线程 } catch (InterruptedException e) { e.printStackTrace(); // 需要重新设置isInterrupted标志位为true monitorThread.interrupt(); } } }); // 启动线程 monitorThread.start(); } public void stop(){ // 设置isInterrupted标志位true monitorThread.interrupt(); }}
运行结果:
两阶段关闭线程:
二、要点
为什么需要在catch代码块中重新执行monitorThread.interrupt()?
因为Thread.sleep()
执行过程中被打断,isInterrupted标志位会清空,下一次进入while
循环就会忽略这次打断,继续运行线程。
演示一下把monitorThread.interrupt()注释掉的结果:
可以看到,会忽略这次的isInterrupted信号,继续运行线程。
感谢各位的阅读,以上就是"java两阶段终止线程怎么实现"的内容了,经过本文的学习后,相信大家对java两阶段终止线程怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
线程
阶段
标志
方法
学习
运行
优雅
代码
信号
做法
内容
思路
结果
监控
也就是
也就是说
就是
情况
文章
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2008r2服务器管理器
北京宏景捷讯网络技术股份
云南综合软件开发市场报价
数据库技术与程序设计重点
机场的无线网络技术
长沙随笔记网络技术有限公司
服务器电机怎么选择
全球网络安全与信息化论坛
福州高端云控软件开发商
网络安全自查报告必须写吗
香港服务器租用恒创科技信赖
我的世界租服务器如何安装mod
西桥服务器加油站电话
湛江网络安全宣传周
数据库 导出表数据
网安大队进企业开展网络安全宣传
软件开发法律风险及解决办法
曲靖服务器租用加盟
三年级上册网络安全手抄报大全
网络安全技术等级划分
生产服务器该设置多少带宽
选择题的数据库设计
服务器优盘引导只显示uffi
计算机网络技术在校赚钱
电视机怎么连接云端服务器
内江社区网络安全宣传
网络安全保卫工作心得
三级嵌入式与网络技术
渠道服的服务器一样吗
网络安全华为培训