勵志

勵志人生知識庫

interrupt()方法

`interrupt()` 方法用於通知執行緒應該中斷,但具體被通知的執行緒是否中斷或繼續執行,應該由被通知的執行緒自己去處理。

當一個執行緒運行時,另一個執行緒可以調用對應的Thread對象的`interrupt()`方法來中斷它,該方法只是在目標執行緒中設定一個標誌,表示它已經被中斷,並立即返回。如果執行緒處於被阻塞狀態(由`wait()`、`sleep()`、`join()`操作引起),那麼執行緒立即退出阻塞並拋出一個`InterruptedException`異常,同時會將中斷標誌清除。如果執行緒處於正常活動狀態,那麼會將該執行緒的中斷標誌設定為`true`。被設定中斷標誌的執行緒將繼續正常運行,不受影響。

需要注意的是,`interrupt()`方法並不能真正的中斷執行緒,需要被調用的執行緒自己配合。在正常運行任務時,經常檢查本執行緒的中斷標誌位,如果被設定了中斷標誌就自行停止執行緒。在調用`interrupt()`時,正確處理`InterruptedException`異常,例如在catch異常後就結束執行緒。