線程的生命週期概述

線程的生命週期概述

在這裏插入圖片描述
新建狀態(New):當線程對象被創建後,即爲新建狀態。如:Thread t = new MyThread();
就緒狀態(Runnable):當調用線程對象的start()方法(t.start()),線程進入就緒狀態。線程進入就緒狀態,只是說明了線程已經做好準備了,隨時等待CPU進行調度執行,即線程執行了start()方法並不一定開始執行
運行狀態(Running):當CPU開始調度處於就緒狀態的線程時,此時線程才得以真正執行,即進入到運行狀態。就緒狀態是進入運行狀態的唯一入口
阻塞狀態(Blocked):進入了運行狀態的線程,由於某種原因放棄了對CPU的使用權,轉入阻塞狀態,直至再次進入到就緒狀態,纔有機會再次被CPU調用以進入運行狀態。
根據阻塞的原因不同,分爲:等待阻塞(wait()方法導致)、同步阻塞(獲取synchronized鎖失敗)、其他阻塞(調用線程的sleep()或join()或發出了I/O請求)。
死亡狀態(Dead):線程執行完了或因異常退出了run()方法,該線程結束生命週期。