Thread.interrupted、Thread.isInterrupted、Thread.interrupt

interrupt()

調用線程的interrupt方法,並不能真正中斷線程,只是給線程做了中斷狀態的標誌

在一個線程中調用另一個線程的interrupt()方法,即會向那個線程發出信號——線程中斷狀態已被設置。至於那個線程何去何從,由具體的代碼實現決定。

 常見現象:“當調用interrupt方法時,調用對象的線程就會拋出InterruptedException異常”,如果檢查線程中斷狀態並拋出InterruptedException異常的方法,那麼 InterruptedException異常就不會被拋出。

interrupted() 檢查並清除中斷狀態

Thread.interrupted():測試當前線程是否處於中斷狀態。執行後將中斷狀態標誌爲false

isInterrupted() 檢查中斷狀態

Thread.isInterrupted(): 測試線程Thread對象是否已經處於中斷狀態。但不具有清除功能.

throsw InterruptedException

如果方法後面加了throsw InterruptedException,則表明該方法中可能會拋出InterruptedException異常,這包含下面兩層含義:

1、是“花費時間”的方法

2、是“可以取消”的方法

中斷狀態 interrupted status

一種用於表示線程是否被中斷的狀態

線程中斷狀態 

----------

interrupted()是靜態方法:內部實現是調用的當前線程的isInterrupted(),並且會重置當前線程的中斷狀態

Thread.interrupted()返回值是true,說明當前線程已經被標記了中斷狀態,

官方文檔對Thread.interrupted()的定義:測試當前線程是否已經中斷,線程的中斷狀態也是由該方法清除。

isInterrupted()是實例方法,是調用該方法的對象所表示的那個線程的isInterrupted(),不會重置當前線程的中斷狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章