面試常問問題——多線程,線程的狀態

問題?線程共有幾種狀態?分別都是什麼。
從thread源碼中也可以看到以下這幾種枚舉類型:
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;

  1. 新建狀態(NEW):新建後,尚未調用start()方法的線程狀態。
  2. 運行狀態(RUNNABLE):包括running和ready
  3. 無限期等待(WAITING):不會唄分配CPU執行時間,需要被顯式喚醒。 thread.join() 就會使當前線程進入無限期等待的狀態。
  4. 限期等待(Timed Waiting):在一定時間後會由系統自動喚醒。 thread.sleep(5000);//即爲限期等待。
  5. 阻塞(BLOCKED):等待獲取排它鎖。
  6. 結束(Terminated):已終止線程的狀態,線程已經結束執行。
    已經結束的線程無法再被喚醒。
    如果已經結束後再調用start方法,會拋出IllegalThreadStateException異常。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章