1. 程式人生 > >java併發程式設計的一些小記錄之interrupt

java併發程式設計的一些小記錄之interrupt

當外部執行緒對某執行緒呼叫了thred.interrupt()方法後,java語言的處理機制是這樣的:如果該執行緒處在可中斷狀態下(呼叫了Thread.wait()或者Thread.sleep()等特定會發生阻塞的api),那麼該執行緒會立即被喚醒,同時會收到一個InterruptedException,同時,如果是阻塞在IO上,對應的資源會被關閉。如果該執行緒接下來不執行Thread.interrupted()方法(不是interrupt),那麼該執行緒在處理任何IO資源的時候,都會導致這些資源的關閉。當然,解決的辦法就是呼叫一下interrupted(),不過這裡需要程式設計師自行根據程式碼的邏輯來設定,根據自己的需求確認是否可以直接忽略該中斷,還是應該馬上退出。