【Java 多線程併發】線程的生命週期(狀態)

當前線程被創建並啓動以後,它既不是一啓動就進入了執行後狀態,也不是一直處於執行狀態。

當線程的生命週期中,它要經過新建(New)、就緒(Runnable)、運行(Running)、阻塞(Blocked)和死亡(Dead)5種狀態。

尤其是當線程啓動以後,它不可能一直”霸佔“着CPU獨自運行,所以 CPU 需要在多條線程之間切換,於是線程狀態也會多次在運行、阻塞之前切換。

1.新建狀態(NEW)

當程序使用 new 關鍵字創建了一個線程之後,該線程就處於新建狀態,此時僅由 JVM 爲其分配內存,並初始化其成員變量的值。

2.就緒狀態(RUNNABLE)

當線程對象調用了 start() 方法之後,該線程處於就緒狀態。

Java 虛擬機會爲其創建方法調用棧和程序計數器,等待調度運行。

3.運行狀態(RUNNING)

如果處於就緒狀態的線程獲得了 CPU ,開始執行 run() 方法的線程執行體,則該線程處於與運行狀態。

4.阻塞狀態(BLOCKED)

阻塞狀態是指線程因爲某種原因放棄了 cpu 使用權,也即讓出了 cpu timeslice,暫時停止運行。

直到線程進入可運行(runnable)狀態,纔有機會再次獲得 cpu timeslice 轉到運行(running)狀態。

阻塞的情況分三種:

等待阻塞(o.wait -> 等待

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