Posted on 2009-11-27 22:11
Gavin.lee 閱讀(858)
評論(0) 編輯 收藏 所屬分類:
多線程
1.NEW
至今尚未啟動的線程的狀態。
2.RUNNABLE
可運行線程的線程狀態。處于可運行狀態的某一線程正在 Java 虛擬機中運行,但它可能正在等待操作系統中的其他資源,比如處理器。
3.BLOCKED
受阻塞并且正在等待監視器鎖的某一線程的線程狀態。處于受阻塞狀態的某一線程正在等待監視器鎖,以便進入一個同步的塊/方法,或者在調用 Object.wait 之后再次進入同步的塊/方法。
4.WAITING
某一等待線程的線程狀態。某一線程因為調用下列方法之一而處于等待狀態:
- 不帶超時值的 Object.wait
- 不帶超時值的 Thread.join
LockSupport.park
處于等待狀態的線程正等待另一個線程,以執行特定操作。 例如,已經在某一對象上調用了 Object.wait() 的線程正等待另一個線程,以便在該對象上調用 Object.notify() 或 Object.notifyAll()。已經調用了 Thread.join() 的線程正在等待指定線程終止。
5.TIMED_WAITING具有指定等待時間的某一等待線程的線程狀態。某一線程因為調用以下帶有指定正等待時間的方法之一而處于定時等待狀態:
- Thread.sleep
- 帶有超時值的 Object.wait
- 帶有超時值的 Thread.join
- LockSupport.parkNanos
- LockSupport.parkUntil
6.TERMINATED
已終止線程的線程狀態。線程已經結束執行。
注意:在給定時間點上,一個線程只能處于一種狀態。這些狀態是虛擬機狀態,它們并沒有反映所有操作系統線程狀態。
為了展現線程在運行時的狀態及其轉換,我畫了下面這個圖: