線程的狀態及轉換關係

1.新建狀態new:

線程對象被new創建後會進入新建狀態

Thread thread = new Thread();
2.就緒狀態Runnable:

就緒狀態,即可執行狀態。線程創建後,其他線程調用該對象的start()方法。線程處於就緒狀態等待被CPU調度。

thread.start()
3.運行狀態Running

處於就緒狀態的線程獲取cpu權限進行執行,線程只能通過就緒態進入運行狀態。

4.阻塞狀態Blocked

線程因爲某種原因放棄CPU使用權,暫時停止運行。
4.1等待阻塞
通過調用線程的wait()方法,讓線程暫停等待某工作的完成。
4.2同步阻塞
線程獲取同步鎖synchronized失敗,進入阻塞狀態。
4.3其他阻塞
調用線程的sleep()、join()或發出I/O請求進入阻塞狀態。
等待sleep()超時,join()等待線程終止或超時,或者I/O處理完畢,線程進入就緒狀態。

5.死亡狀態Dead

線程執行完了或者因爲異常退出了run()方法,線程生命週期結束。

狀態之間的轉換關係

在這裏插入圖片描述

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