Java - Thread 的 生命週期

By sunwc 2023-03-23 Java

JDK中用Thread.State類定義了執行緒的幾種狀態如下:

public enum State {
  NEW,
  RUNNABLE,
  BLOCKED,
  WAITING,
  TIMED_WAITING,
  TERMINATED
}


Java語言使用 Thread 類及其子類別的物件來表示執行緒,在它一個完整的生命週期中通常要經歷如下五個狀態:

1. 新建:當一個 Thread 類或其子類別的物件被宣告並創建時,新的執行緒物件處於新建狀態

2. 就緒:處於新建狀態的執行緒被start()後,將進入執行緒隊列等待、以取得一段能夠搶占CPU的使用時長,此時它已具備了執行的條件,只是還沒分配到CPU資源

3. 執行:當就緒的執行緒被調度並取得CPU資源時,便進入執行狀態,run()中定義了執行緒的操作和功能

4. 阻塞:在某種特殊的情況下,被人為掛起或執行輸入輸出操作時,讓出CPU並臨時中止自己的執行,進入阻塞狀態

5. 死亡:當執行緒完成了它的全部工作或執行緒被提前強制性地終止或出現例外導致結束

總結

本文概略的介紹了執行緒的生命週期,了解到從 就緒 到 執行 狀態是雙向的關係,以及在生命週期關係圖中,提及一些 java.lang.Object的方法,例如wait(), notify(), notifyAll()等,因此關於方法的介紹請看

我的另一篇文章 Java - 執行緒 交互輸出1-50的數字