問七:如何中斷一個線程?

已經被拋棄的方法:

通過調用stop()

通過調用suspend()和resume()方法

 

廢棄原因(再寫具體一點):

太過暴力,可能會導致一些清理工作不會完成

調用後會直接釋放鎖,可能會導致數據不同步的問題https://www.jianshu.com/p/e0ff2e420ab6

 

目前使用的方法:

調用interrupt(),通知線程應該中斷

1.如果線程處於阻塞狀態,那麼線程將立即退出阻塞狀態,並拋出一個InterruptedException異常

2.如果線程處於正常活動狀態,那麼會將該線程的中斷標誌設置爲true,被設置中斷標誌的線程將繼續正常運行,不受影響。

注:需要被調用的線程配合中斷:1.在正常運行任務時,經常檢查本線程的中斷標誌,如果中斷標誌爲true,就尋找一個安全的位置自行停止線程。2.如果線程處於正常活動狀態,那麼會將該線程的中斷標誌設置爲true,被設置的線程將繼續運行,不受影響。

      

示例代碼:

 

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