1. 程式人生 > >執行緒以及多執行緒

執行緒以及多執行緒

標題格

  1、執行緒的五種狀態
1、執行緒的五種狀態
  1)、新建
  當new建立一個執行緒,例如new thread(r),執行緒還沒開始執行,處於新建狀態。
  2)、就緒
  新建的新執行緒並不會自動執行,要執行需要呼叫start()方法建立執行緒執行的系統資源,返回後,此時執行緒就處於就緒狀態。
  但是處於就緒狀態的執行緒也並不是就能立即執行run()方法。因為執行緒必須同其他執行緒競爭CPU時間,獲得CPU時間才能執行執行緒。(執行緒數>CPU數)
  3)、執行
  當執行緒獲得CPU時間,進入執行狀態,執行run()方法。
  4)、阻塞
  執行緒執行過程中,可能由於很多原因進入阻塞狀態:
    1)、執行緒通過呼叫sleep方法進入睡眠狀態;
    2)、執行緒試圖獲得一個鎖,但是該鎖被其他執行緒持有;
    3)、執行緒在等待某個處罰條件;(例如定時啟動執行緒)
    所謂阻塞就是正在執行的執行緒沒有結束,暫時讓出CPU,其他處於就緒的執行緒就獲得CPU時 間,進入執行狀態。
  5)、死亡
  兩個原因導致執行緒死亡:
    1)、run()方法正常退出而自然死亡;
    2)、一個未捕獲的異常終止了run方法而使執行緒猝死;
    用isAlive返回true,則執行緒可執行或被阻塞。返回false,則執行緒死亡或者new狀態且不是可執行的。

 

該隨筆分類為公眾號筆記,僅做筆記記錄,加深記憶以及方便用時查詢,非抄襲,非盈利。
參考:純潔的微笑、石杉的架構筆記、java版web專案、架構師之路、springForAll社群等公眾號。