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。这是为啥呢?
InterruptedException
异常被捕获之后标志位清空了