关于线程中断状态的疑问
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(() -> {
try {
System.out.println(Thread.currentThread());
Thread.sleep(100000);
System.out.println("执行");
} catch (InterruptedException e) {
System.out.println(Thread.currentThread());
System.out.println("检测到中断异常");
System.out.println("线程中断状态:" + Thread.currentThread().isInterrupted());
Thread.currentThread().interrupt();
System.out.println("线程中断状态:" + Thread.currentThread().isInterrupted());
System.out.println("线程激活状态:" + Thread.currentThread().isAlive());
System.out.println("线程是否守护:" + Thread.currentThread().isDaemon());
}
});
thread.start();
Thread.sleep(2000);
System.out.println("开始中断");
thread.interrupt();
}
输出结果
Thread[Thread-0,5,main]
开始中断
Thread[Thread-0,5,main]
检测到中断异常
线程中断状态:false
线程中断状态:true
线程激活状态:true
线程是否守护:false
当我中断线程thread后,打印thread的中断状态为false,我必须手动的在异常捕获中interrupt,thread中断状态才能变为ture。这是为啥呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
InterruptedException
异常被捕获之后标志位清空了