6、Java 線程狀態切換圖

概述

上一篇博客我整理了 Java 線程常用的方法,其中提到 getState() 方法可以獲取線程的狀態。本篇博客主要通過流程圖的方式整理線程狀態的轉換方式:


線程狀態切換圖

本篇博客主要從以下兩個模塊展開:

  1. Java 線程狀態
  2. 狀態轉換圖

1、Java 線程狀態

Java Thread 源碼中,線程狀態通過枚舉類 State 表示,其中線程狀態主要有以下六種:

  • NEW:剛剛創建,還沒有啓動的線程。即 new 出來的 Thread 對象

  • RUNNABLE:正在運行的線程,即使CPU沒有調度,也視爲 RUNNABLE 狀態。

  • BLOCKED:線程競爭鎖失敗,阻塞等待鎖時的狀態

  • WAITING:沒有最大等待時長的阻塞狀態,等待其他線程喚醒

  • TIMED_WAITING:有最大等待時長的阻塞狀態

  • TERMINATED:已經死亡(執行完畢)的線程


2、狀態轉換圖

爲了區分正在運行還是就緒等待CPU調度,我們新加了一個Ready狀態,表示等待CPU調度的線程。

線程狀態轉移圖
該流程圖只是一個大概過程,無法展現方法的細節,如: sleep() 不會放棄鎖,wait() 會放棄鎖等特性。如果想了解每個方法的具體細節,可以點擊這裏參考我之前的博客。


參考
https://blog.csdn.net/pange1991/article/details/53860651
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章