Java執行緒:執行緒中斷

weixin_33766168發表於2015-12-21

  interrupt方法可以用來請求終止執行緒。

  當對一個執行緒呼叫interrupt方法時,執行緒的中斷狀態被置位。這時每個執行緒都有boolean標誌。每個執行緒都應該不時的檢查這個標誌,以判斷執行緒是否被中斷。

  要想弄清楚中斷狀態是否被置位,首先呼叫靜態的Thread.currentThread方法獲得當前執行緒,然後呼叫isInterrupted方法:

1 while (!Thread.currentThread().isInterrupted()&&more work to do)
2 {
3       do more work      
4 }

 

  當在一個被堵塞的執行緒(呼叫sleep或wait)上呼叫interrupt方法時,堵塞呼叫將會被Interrupted Exception 異常中斷。

注意:

  1 一個被中斷的執行緒不一定被終止。中斷一個執行緒只不過是引起它的注意。被中斷的執行緒可以決定如何響應中斷。

  2 有兩個類似的中斷執行緒的方法interrupted和isInterrupted。Interrupted是一個靜態方法,它檢測當前的執行緒是否被中斷,而且會清除該執行緒的中斷狀態。而isInterrupted可用來檢驗是否有執行緒被中斷,並且不會改變中斷狀態。

當神已無能為力,那便是魔渡眾生

相關文章