1. 程式人生 > >Java 線程狀態有哪些?

Java 線程狀態有哪些?

art 時間 技術 表示 關系 調用 level 方法 技術分享

線程狀態有 5 種,新建,就緒,運行,阻塞,死亡。關系圖如下:

技術分享圖片

1. 線程 start 方法執行後,並不表示該線程運行了,而是進入就緒狀態,意思是隨時準備運行,但是真正何時運行,是由操作系統決定的,代碼並不能控制,

2. 同樣的,從運行狀態的線程,也可能由於失去了 CPU 資源,回到就緒狀態,也是由操作系統決定的。這一步中,也可以由程序主動失去 CPU 資源,只需調用 yield 方法。

3. 線程運行完畢,或者運行了一半異常了,或者主動調用線程的 stop 方法,那麽就進入死亡。死亡的線程不可逆轉。

4. 下面幾個行為,會引起線程阻塞。

  • 主動調用 sleep 方法。時間到了會進入就緒狀態
  • 主動調用 suspend 方法。主動調用 resume 方法,會進入就緒狀態
  • 調用了阻塞式 IO 方法。調用完成後,會進入就緒狀態。
  • 試圖獲取鎖。成功的獲取鎖之後,會進入就緒狀態。
  • 線程在等待某個通知。其它線程發出通知後,會進入就緒狀態

Java 線程狀態有哪些?