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