62,614
社区成员
发帖
与我相关
我的任务
分享
private static void test4() {
Thread t1 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
log.debug("park...");
LockSupport.park();
log.debug("打断状态:{}", Thread.interrupted());
log.debug("打断状态:{}", Thread.currentThread().isInterrupted());
}
});
t1.start();
sleep(1);
t1.interrupt();
}
14:59:59.983 c.TestInterrupt [Thread-0] - park...
15:00:00.982 c.TestInterrupt [Thread-0] - 打断状态:true
15:00:00.983 c.TestInterrupt [Thread-0] - 打断状态:false
15:00:00.983 c.TestInterrupt [Thread-0] - park...
private static void test4() {
Thread t1 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
log.debug("park...");
LockSupport.park();
log.debug("打断状态:{}", Thread.currentThread().isInterrupted());
log.debug("打断状态:{}", Thread.interrupted());
}
});
t1.start();
sleep(1);
t1.interrupt();
}
15:05:34.855 c.TestInterrupt [Thread-0] - park...
15:05:35.853 c.TestInterrupt [Thread-0] - 打断状态:true
15:05:35.854 c.TestInterrupt [Thread-0] - 打断状态:true
15:05:35.855 c.TestInterrupt [Thread-0] - park...
15:05:35.855 c.TestInterrupt [Thread-0] - 打断状态:false
15:05:35.855 c.TestInterrupt [Thread-0] - 打断状态:false
15:05:35.855 c.TestInterrupt [Thread-0] - park...
interrupt() 改变了标志位,Thread.interrupted()静态方法会得到标志位同时置标志位为false,而成员方法的interrupted()并不会置回false;park在中断标志位为true的时候是失效的