java 執行緒生命週期
阿新 • • 發佈:2019-02-19
執行緒的生命週期可以通過檢視Thread 的原始碼來看。
Thread這個類中有一個 State
的列舉類,其中定了了執行緒的6種狀態
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
這6種狀態之間的關係我大致畫了 如下的一個圖:
下面對這幾個狀態做一一介紹
狀態名 | 解釋 |
---|---|
NEW | 執行緒建立完畢但是還麼有啟動,也就是一個執行緒物件剛被 new 出來 但是還沒有去呼叫他的 start() 方法 |
RUNNABBLE | 呼叫了start() 方法,執行緒正在執行 |
TERMINATED | 執行緒終止,也就是一個執行緒結束了 |
BLOCKED | 執行緒阻塞,可以呼叫sleep 方法,進入這個狀態,sleep 方法不會釋放資源,從而導致阻塞 |
WAITING | 執行緒等待,呼叫notify 喚醒 |
TIMED_WAITING | 等待超時,可以設定一個超時時間,過了超時時間自動回到RUNABLE狀態 |
關於這6種狀態之間的相互轉換,在後續的章節中,還會做進一步的介紹。