2.線程狀態


線程根據其生命週期分成一下幾種狀態

  • NEW 新建
    線程剛創建
  • RUNNABLE 可運行
    在JVM中正在運行的線程
  • BLOCKED 阻塞
    線程處於阻塞狀態,等待監視鎖,可以重新進行同步代碼塊中執行
  • WAITING 等待
    等待狀態
  • TIMED_WAITTING 超時等待
    調用sleep() join() wait()方法可能導致線程處於等待狀態
  • TERMINATED 終止
    線程執行完畢,已經退出

1. 狀態詳解

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Qtz0TB5G-1577707691688)(https://note.youdao.com/yws/res/42525/A47006CD0B88496F8F5351C2CE9D212B)]

1.1. NEW

當線程繼承Thread或者實現了Runnable創建了線程對象後,當new線程對象過後線程就進入了初始的狀態。

1.2. RUNNABLE

當線程對象調用了start()方法的時候,線程啓動進入可運行的狀態。就是CPU可以來執行他了,但是不一定會立即執行,需要等到分配給他的時間片段的到來

1.3. WAITING

當線程調用 o.wait() t.join() LockSupport.park()後進入WAITING狀態

1.4. TIMED_WAITTING

當線程調用 Thread.sleep(time) o.wait(time) t.join(time) LockSupport.parkNanos() LockSupport.parkUntil() 後進入TIMED_WAITTING狀態

當線程調用 o.notify() o.notifyAll() LockSupport.unpark()後退出 TIMED_WAITTING 進入RUNNABLE狀態

1.5. BLOCKED

等待進入同步代碼塊的鎖的時候進入BLOCKED 獲得鎖之後退出BLOCKED並進入RUNNABLE狀態

1.6. TERMINATED

線程執行完成之後進入 TERMINATED

發佈了92 篇原創文章 · 獲贊 17 · 訪問量 6550
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章