java concurrent-線程狀態

一個線程只能在給定的時間點處於一個狀態。
這些狀態只是虛擬機的狀態 不反映任何操作系統線程狀態。

關於線程的狀態 Thread類源碼中已經給出:

NEW
尚未啓動的線程處於此狀態。

RUNNABLE
在Java虛擬機中執行的線程處於該狀態。
可運行線程的線程狀態。可運行線程中的線程
*狀態在Java虛擬機中執行,但它可能等待來自操作系統的其他資源,例如處理器等

BLOCKED(鎖池狀態)
被阻塞等待監視器鎖
等待線程阻塞,等待監視器鎖。
處於阻塞狀態的線程正在等待監視器鎖
輸入同步塊/方法或調用 {@link Object#wait() Object.wait}.後重新進入同步塊/方法

WAITING
等待線程的線程狀態。
一個線程,它無限期地等待另一個線程。在這個狀態下執行特定的動作
由於調用了其中一個線程,所以處於等待狀態

{@link Object#wait() Object.wait} without timeout
{@link #join() Thread.join} without timeout
{@link LockSupport#park() LockSupport.park}

等待狀態中的線程正在等待另一線程執行特定的動作。
例如 一個線程調用了Object.wait() 在一個對象上
等待另一個線程調用Object.notify() or Object.notifyAll()
在那個對象上。一個線程調用Thread.join()等待一個特定的線程去終止。

TIMED_WAITING
等待另一線程執行動作的線程,在該狀態下達到指定的等待時間。
具有指定等待時間的等待線程的線程狀態。由於調用一個線程,線程處於定時等待狀態,具有指定的正等待時間的以下方法
{@link #sleep Thread.sleep}
{@link Object#wait(long) Object.wait} with timeout
{@link #join(long) Thread.join} with timeout
{@link LockSupport#parkNanos LockSupport.parkNanos}
{@link LockSupport#parkUntil LockSupport.parkUntil}

TERMINATED
*已退出的線程處於此狀態。
終止線程的線程狀態,線程已完成執行完畢 結束

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

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