Thread interrupt() 執行緒中斷的詳細說明
* 什麼情況下,執行緒狀態會自動變更為false? *
* 1、執行緒自動執行完畢後,則狀態將會自動置為 false; * 2、執行緒內部使用:Thread.interrupted()方法獲取執行緒狀態時,將會自動清除執行緒狀態,使當前執行緒狀態重新更改為false; * 3、執行緒內部如果捕獲了,InterruptedException異常,那麼此時執行緒狀態也會自動修改為false; *
* 所以, * 1、如果是使用Thread.interrupted()來獲取執行緒狀態的情況,使用完以後,必須保證執行緒是正常中斷的;如果不能保證,建議使用Thread.currentThread().isInterrupted()來獲取執行緒狀態;isInterrupted()方法只獲取執行緒狀態,不會更改執行緒狀態; * 2、對於執行緒內使用try catch 捕獲了InterruptedException異常的情況,則捕獲完以後,一定要做相關操作,而不要只捕獲異常,但是不處理該中斷信令; * 當前捕獲到異常後,如果需要中斷,則直接中斷執行緒即可 * 當前捕獲到異常後,如果不需要中斷,需要繼續執行執行緒,則此時需要執行Thread.currentThread().interrupt();重新更改下自己的執行緒狀態為true,表示當前執行緒需要繼續執行; * 當前捕獲到異常後,如果不需要中斷,而是將異常外拋給上層方法進行處理,那麼此時也需要執行Thread.currentThread().interrupt();重新更改下自己的執行緒狀態為true,表示當前執行緒需要繼續執行; */ public static void main(String[] args) throws InterruptedException { // threadStopTest(); /* Thread.currentThread().interrupt(); System.out.println(Thread.currentThread().isInterrupted());true System.out.println(Thread.currentThread().isInterrupted());true System.out.println(Thread.currentThread().isInterrupted());true System.out.println(Thread.interrupted());true System.out.println(Thread.currentThread().isInterrupted());false System.out.println(Thread.interrupted());false */ } ``` [原創宣告:作者:Arnold.zhao 部落格園地址:https://www.cnblogs.com/zh94](https://www.cnblogs.c