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(),不會重置當前線程的中斷狀態