1. 程式人生 > >JDK併發包溫故知新系列(三)—— 執行緒的中斷

JDK併發包溫故知新系列(三)—— 執行緒的中斷

RUNNABLE狀態-執行緒呼叫了start()方法,處於等待系統排程或在執行中

這種情況下只設置中斷標誌位。

WAITING/TIMED_WAITING-等待狀態

當呼叫如下方法時進入等待狀態,包括的方法有:

WATING:呼叫了鎖資源的wait方法,或呼叫了join方法。

TIMED_WAITING:wait(long timeout),sleep(long millis),join(long millis)。(wait與sleep的區別:是否釋放鎖)。

丟擲InterruptedException異常並且執行緒中斷標誌位被清空,針對此一般一般是交由上級處理,若希望執行緒中斷,在catch裡面執行清理工作或重設執行緒標誌位。

BLOCKED-執行緒處於鎖等待佇列,試圖進入同步塊

只設置標誌位。

NEW/TERMINATED-執行緒結束了或還未呼叫start()方法

不會有任何效果。

注意

不是說呼叫了interrupt()方法,執行緒就終止了,需要執行緒實現者通過程式碼實現,如下:

while (!Thread.currentThread().isInterrupted()) {
//清