Java多线程 while内try/catch 导致自动清除中断信号
发布日期:2021-06-30 13:11:43
浏览次数:3
分类:技术文章
本文共 1133 字,大约阅读时间需要 3 分钟。
文章目录
while内try/catch 导致自动清除中断信号
示例代码如下
while循环内部, 进行了Thread.sleep(10)
的try catch public class CantInterrupt { public static void main(String[] args) throws InterruptedException { Runnable runnable = () -> { int num = 0; while ( num <= 10000) { if (num % 100 == 0) { System.out.println(num + " 是100的整数"); } num++; //每一次循环,休眠10ms try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } }; //启动线程 Thread thread = new Thread(runnable); thread.start(); //此处的 Thread.sleep(5000); 是休眠主线程, 让子线程运行5s, //子线程运行5s后, 给出子线程的休眠信号 Thread.sleep(5000); thread.interrupt(); }}
程序运行如下 .
说明了即使发出了中断的信号, 抛出了异常, 但是程序依然会继续运行, 说明中断失败. 即使是在while 的判断中,加上线程状态的判断, 也不会成功的进行线程的中断. 主要的原因是 while循环内的这段try catch代码, 会把线程中断的状态位给清除掉了try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }
转载地址:https://javaweixin6.blog.csdn.net/article/details/108088184 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月19日 15时34分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
我敢说,这几道笔试题你不一定会
2019-05-01
MySql运行状态分析
2019-05-01
Centos 服务器配置MariaDB10 远程连接
2019-05-01
解决邮件发送错误:503 Error: need EHLO and AUTH first
2019-05-01
SpringBoot使用QQ邮箱发送包含附件的邮件
2019-05-01
公司开始裁员了,33岁的我何去何从
2019-05-01
使用Arrays.asList注意事项
2019-05-01
从四川电视台播放事故论AI智能审核的重要性
2019-05-01
List集合排序Comparable与Comparator实现
2019-05-01
你为什么要写这样的代码?你知不知道填这个坑有多难
2019-05-01
查看生产环境日记常用的几个linux命令
2019-05-01
spring+quartz.2.3.0数据库持久化实现
2019-05-01
Malformed \uxxxx encoding.异常
2019-05-01
使用aspose.words 18.6实现pdf文档转换
2019-05-01
Java 生成文字图片
2019-05-01