Java執行緒狀態轉換
Java語言定義了5種執行緒狀態,在任意一個時間點,一個執行緒只能有且只有其中的一種
狀態,這5種狀態分別如下。
新建(New):建立後尚未啟動的執行緒處於這種狀態。
執行(Runable):Runable包括了作業系統執行緒狀態中的Running和Ready,也就是處於此
狀態的執行緒有可能正在執行,也有可能正在等待著CPU為它分配執行時間。
無限期等待(Waiting):處於這種狀態的執行緒不會被分配CPU執行時間,它們要等待被
其他執行緒顯式地喚醒。以下方法會讓執行緒陷入無限期的等待狀態:
●沒有設定Timeout引數的Object.wait()方法。
●沒有設定Timeout引數的Thread.join()方法。
●LockSupport.park()方法。
限期等待(Timed Waiting):處於這種狀態的執行緒也不會被分配CPU執行時間,不過無
須等待被其他執行緒顯式地喚醒,在一定時間之後它們會由系統自動喚醒。以下方法會讓執行緒
進入限期等待狀態:
●Thread.sleep()方法。
●設定了Timeout引數的Object.wait()方法。
●設定了Timeout引數的Thread.join()方法。
●LockSupport.parkNanos()方法。
●LockSupport.parkUntil()方法。
阻塞(Blocked):執行緒被阻塞了,“阻塞狀態”與“等待狀態”的區別是:“阻塞狀態”在等
待著獲取到一個排他鎖,這個事件將在另外一個執行緒放棄這個鎖的時候發生;而“等待狀
態”則是在等待一段時間,或者喚醒動作的發生。在程式等待進入同步區域的時候,執行緒將
進入這種狀態。
結束(Terminated):已終止執行緒的執行緒狀態,執行緒已經結束執行。
轉換圖:
摘自《深入理解java虛擬機器》
相關文章
- 淺談 Java執行緒狀態轉換及控制Java執行緒
- Java執行緒狀態及切換Java執行緒
- JAVA 執行緒狀態及轉化(轉)Java執行緒
- 執行緒的狀態轉換以及基本操作執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java執行緒的狀態Java執行緒
- Java執行緒生命週期與狀態切換Java執行緒
- 玩轉java多執行緒 之多執行緒基礎 執行緒狀態 及執行緒停止實戰Java執行緒
- 原來還能這樣看Java執行緒的狀態及轉換Java執行緒
- 執行緒狀態執行緒
- 【Java】執行緒的 6 種狀態Java執行緒
- Java 執行緒的5種狀態Java執行緒
- java執行緒的狀態+鎖分析Java執行緒
- Java執行緒狀態及同步鎖Java執行緒
- Java多執行緒(04)執行緒狀態與上線文切換以及Thread方法介紹Java執行緒thread
- 總算把執行緒六種狀態的轉換說清楚了!執行緒
- 執行緒的6種狀態以及轉變執行緒
- 透徹講解,Java執行緒的6種狀態及切換Java執行緒
- java執行緒的五大狀態,阻塞狀態詳解Java執行緒
- 執行緒狀態和鎖執行緒
- 併發程式設計——Java執行緒的6種狀態及切換程式設計Java執行緒
- 乾貨:教你如何監控 Java 執行緒池執行狀態Java執行緒
- 【JAVA併發第二篇】Java執行緒的建立與執行,執行緒狀態與常用方法Java執行緒
- 詳解Java執行緒池的ctl(執行緒池控制狀態)【原始碼分析】Java執行緒原始碼
- MySQL執行緒狀態詳解MySql執行緒
- jstack判斷執行緒狀態JS執行緒
- ThreadPollExcutor執行緒池的狀態thread執行緒
- 多執行緒的執行緒狀態及相關操作執行緒
- 面經手冊 · 第20篇《Thread 執行緒,狀態轉換、方法使用、原理分析》thread執行緒
- 深入理解Java多執行緒與併發框(第①篇)——執行緒的狀態Java執行緒
- Java的六種執行緒狀態及程式碼示例Java執行緒
- Java併發程式設計序列之執行緒狀態Java程式設計執行緒
- 如何使用jstack分析執行緒狀態JS執行緒
- Memcached 多執行緒和狀態機執行緒
- 【多執行緒與高併發】- 執行緒基礎與狀態執行緒
- JavaSE_多執行緒入門 執行緒安全 死鎖 狀態 通訊 執行緒池Java執行緒
- 執行緒的幾種狀態總結執行緒
- java中WAITING狀態的執行緒為啥還會消耗CPUJavaAI執行緒