子线程interrupted为什么在main线程中获取不到这个状态
子线程interrupted,在catchException之后,重新设置了此线程为已中断的状态,为什么在代码的最后一行获取的状态仍然是false?
public class TheadStatusTest {
public static void main(String[] args) throws InterruptedException {
Thread s = new Thread(()->{
try {
System.out.println(Thread.currentThread().getName());
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e) {
//抛出异常后,线程的标示位已经clear成false了
// 这里返回false
System.out.println("INTERRUPTED ..." + Thread.currentThread().isInterrupted());
// System.out.println("INTERRUPTED ..." + Thread.interrupted()); //
e.printStackTrace();
//重新设置标示位
Thread.currentThread().interrupt();
// 这里返回ture
System.out.println("INTERRUPTED 2 ..." + Thread.currentThread().isInterrupted());
}
}, "Abc-thread-");
s.start();
//设置线程标示位为true //
s.interrupt();
Thread.sleep(1000);
System.out.println("===>"+ s.isInterrupted()); //这个状态是在main.sleep之后获取的,为什么是false?
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论