先執行interrupted()方法可以得到預期結果,執行緒的中斷標記被清空,park()可以正常阻塞執行緒
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...
如果是先運行isInterrupted()方法,那么park()需要到下次interrupted()的時候才會阻塞執行緒
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...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/105850.html
標籤:Java SE
上一篇:測驗后端的登錄介面報404錯誤
