java_5:線程的生命週期和狀態轉換

1、線程5個狀態的簡單介紹

開始:當線程Thread對象建立完成時,線程的生命週期就開始了
結束:當run()方法中代碼正常執行完畢或者線程拋出一個未捕獲的異常(Exception)或錯誤(Error)時,線程的生命週期結束java

  • 線程整個生命週期分爲5個階段:
  • 新建狀態(New):此時僅由Java虛擬機爲其分配了內存,沒有表現出任何線程的動態特徵,還不能運行
  • 就緒/可運行狀態(Runnable):線程對象調用了start()方法,具有了運行條件,此時線程位於可運行池中。但可否運行,要看是否得到CPU使用權,這須要等待系統額調度
  • 運行狀態(Running):就緒狀態的線程得到了CPU的使用權,開始執行run()方法,
  • 阻塞狀態(Blocked):正在執行的線程迴音某些特殊的狀況,放棄CPU使用權,進入阻塞狀態,此時它不能進入就緒隊列進行排隊等候,只有消除阻塞緣由後,才能轉爲就緒狀態
  • 死亡狀態(Terminated):當run()方法中代碼正常執行完畢或者線程拋出一個未捕獲的異常(Exception)或錯誤(Error)時,線程進入死亡狀態。一旦進入死亡狀態,線程將再也不有運行的資格,也不能轉爲其餘狀態。

    2、狀態轉換關係圖:

java_5:線程的生命週期和狀態轉換

相關文章
相關標籤/搜索