首先,大家得先知道一個點,線程中會有一個中斷標記的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
