1. 程式人生 > 其它 >執行緒狀態、執行緒打斷

執行緒狀態、執行緒打斷

一、Java的6種執行緒狀態

  new:執行緒建立,還未啟動

  runnable:可執行狀態,由執行緒排程器安排執行

      ready:就緒狀態

      running:執行

  waiting:等待被喚醒,如自旋

  timed waiting:隔一段時間後自動喚醒

  blocked:被阻塞,只有synchronized才會到該狀態

  terminated:執行緒結束

二、執行緒打斷

1、interrupt:打斷某個執行緒,只是設定執行緒的標誌位,並不是真正的打斷執行緒。是不能中斷正在競爭鎖的執行緒

  isInterrupted:查詢執行緒是否被打斷

  static interrupted:查詢當前執行緒是否被打斷過,並重新設定標誌位

2、如果想打斷鎖爭搶過程用ReentrantLock,使用lockInterruptibly方法

sleep方法在睡眠的時候,不到時間是沒辦法叫醒的,這個是時候可以用interrupt設定標誌位,然後必須得catch到interruptedException來進行處理,決定繼續睡或者其他邏輯

捕獲到異常後java會自動進行標記位的復位

三、執行緒的結束

面試題:如何優雅的結束一個執行緒?

1、stop方法,但是該方法已被棄用

  因為使用stop方法會釋放所有鎖,加鎖主要為了資料一致性問題,使用stop釋放所有鎖後,資料容易不一致

2、使用interrupt,捕獲異常並且處理

作者:

http://cnblogs.com/lyc-code/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權力。