1. 程式人生 > 其它 >執行緒的生命週期,執行緒有哪些狀態

執行緒的生命週期,執行緒有哪些狀態

執行緒通常分為五種狀態:建立,就緒,執行,阻塞,死亡。

阻塞又分為三種:

  等待阻塞:執行的執行緒執行wait方法,該執行緒會釋放佔用的所有資源,JVM會把執行緒放入等待池中,進入這個狀態後,是不能自動喚醒的,必須依靠其他執行緒呼叫notify或notifyAll方法才能喚醒,wait是Object類的方法。

  同步阻塞:執行的執行緒在獲取物件的同步鎖時,若該同步鎖被別的執行緒佔用,則JVM會把執行緒放入鎖池中。

  其他阻塞:執行的執行緒執行sleep或join方法,或者發出了I/O請求時,JVM會把該執行緒置為阻塞狀態。當sleep狀態超時,join等待執行緒終止或超時,或者I/O請求處理完畢,執行緒重新轉入就緒狀態。sleep時Thread類的方法。

1.新建狀態:新建立一個執行緒物件

2.就緒狀態:執行緒物件建立後,其他執行緒呼叫了該物件的start方法,該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。

3.執行狀態:就緒狀態的執行緒獲取了cpu,執行程式程式碼。

4.阻塞狀態:阻塞狀態時執行緒因為某種原因放棄cpu使用權,暫時停止執行,直到執行緒進入就緒狀態,才有機會轉到執行狀態。

5.死亡狀態:執行緒執行完了或者因異常退出了run方法,該執行緒結束生命週期。