java Thread 關於調用interrupt后拋出InterruptedException異常的一點解讀


首先,大家得先知道一個點,線程中會有一個中斷標記的boolean值,記錄當前線程是否打斷,這只是一個標記值,並不會實際影響程序的運行,如果需要中斷線程,需要自己手動操作。

我自己初始化了A,B兩個線程,A線程循環每2秒睡眠一次。B線程調用A線程的引用,執行interrupt方法,B想打斷A這個線程,A線程的中斷標記值設為true。

這時A線程會拋出InterruptedException異常,拋出異常后中斷標記值會立即設為false。這里大家需要注意,B的本意是要打斷A,讓它中斷,但你拋出異常后立即把中斷標記設為了false,這相當於擅自改變了B的本意,所以需要在catch的代碼塊中加一行代碼:Thread.currentThread().interrupt();來保證A線程的中斷標記為true,是B想要的中斷狀態。

這只是一種規范操作,實際情況應該自己把握。

來自:https://blog.csdn.net/suchengbin3433/article/details/88053210


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM