在咱們的Thread類中,咱們能夠看到多線程有六種狀態。
NEW:初始狀態
RUNNABLE:運行狀態
BLOCKED:阻塞狀態
WAITING:等待狀態
TIMED_WAITING:超時等待狀態
TERMINATED:終止狀態多線程
一、NEW 表示線程建立成功,但沒有運行,在 new Thread 以後,沒有 start 以前,線程都處於 NEW 狀態;
二、RUNNABLE 表示線程正在運行中,當咱們運行 strat 方法,子線程被建立成功以後,子線程的狀態變成 RUNNABLE;
三、TERMINATED 表示線程已經運行結束,子線程運行完成、被打斷、被停止,狀態都會從 RUNNABLE 變成 TERMINATED;
四、BLOCKED 表示線程被阻塞,若是線程正好在等待得到 monitor lock 鎖,好比在等待進入 synchronized 修飾的代碼塊或方法時,會從 RUNNABLE 變成 BLOCKED;
五、 WAITING 和 TIMED_WAITING 都表示等待,如今在遇到 Object#wait、Thread#join、
LockSupport#park 這些方法時,線程就會等待另外一個線程執行完特定的動做以後,才能結
束等待,只不過 TIMED_WAITING 是帶有等待時間的;線程