執行緒的狀態以及狀態之間的相互轉換

2021-08-30 02:24:51 字數 519 閱讀 8551

新建狀態(new):新建立了乙個執行緒物件。

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

執行狀態(running):就緒狀態的執行緒獲取了cpu,執行程式**。

阻塞狀態(blocked):阻塞狀態是執行緒因為某種原因放棄cpu使用權,暫時停止執行。直到執行緒進入就緒狀態,才有機會轉到執行狀態。阻塞的情況分三種:

(一)、等待阻塞:執行的執行緒執行wait()方法,jvm會把該執行緒放入等待池中。

(二)、同步阻塞:執行的執行緒在獲取物件的同步鎖時,若該同步鎖被別的執行緒占用,則jvm會把該執行緒放入鎖池中。

(三)、其他阻塞:執行的執行緒執行sleep()或join()方法,或者發出了i/o請求時,jvm會把該執行緒置為阻塞狀態。當sleep()狀態超時、join()等待執行緒終止或者超時、或者i/o處理完畢時,執行緒重新轉入就緒狀態。

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

執行緒7種狀態的相互轉換

小小的作下解釋 1 執行緒的實現有兩種方式,一是繼承thread類,二是實現runnable介面,但不管怎樣,當我們new了這個物件後,執行緒就進入了初始狀態 2 當該物件呼叫了start 方法,就進入可執行狀態 3 進入可執行狀態後,當該物件被作業系統選中,獲得cpu時間片就會進入執行狀態 4 進...

執行緒7種狀態的相互轉換

今天有同事問到執行緒的問題,自己突然就有點蒙了,只模糊的記得個大概。當初學習執行緒的時候把這7個狀態記得比自己名字還熟悉 還把這7個狀態編成了一段悽慘而美麗的愛情故事 沒想到如今卻只能記得個大概 真驗證了 好記性不如爛筆頭 的真理 還是趕快回憶一下吧 先從開始 小小的作下解釋 1 執行緒的實現有兩種...

執行緒的狀態型別和相互轉換

寫部落格的目的是為了自己學習和複習,許多解釋來自於網上大牛,文章非原創。能幫助到別人當然更好不過,水平有限,可能有許多錯誤,歡迎指正。新建狀態 new 新建立了乙個執行緒物件 就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,...