執行緒狀態及其轉換

2021-08-28 05:48:33 字數 633 閱讀 1320

1.新建狀態(new): 執行緒物件被建立後,就進入了新建狀態。例如,thread thread = new thread()。

2.就緒狀態(runnable):執行緒物件被建立後,其它執行緒呼叫了該物件的start()方法,從而來啟動該執行緒。

3.執行狀態(running): 執行緒獲取cpu許可權進行執行。

4.阻塞狀態(blocked): 阻塞狀態是執行緒因為某種原因放棄cpu使用權,暫時停止執行。直到執行緒進入就緒狀態,才有機會轉到執行狀態。阻塞的情況分三種:

(01) 等待狀態 : 通過呼叫執行緒的wait()方法,讓執行緒等待某工作的完成。

(02) 阻塞 :執行緒在獲取synchronized同步鎖失敗(因為鎖被其它執行緒所占用),它會進入同步阻塞狀態,或者等待事件完成,或者呼叫了join()方法。

(03) 睡眠阻塞:呼叫sleep()方法

5.死亡狀態(dead): 執行緒執行完了或者因異常退出了run()方法,該執行緒結束生命週期。

java 執行緒 執行緒的狀態及其狀態的轉換

new 新建立執行緒,初始態 runnable 可執行狀態,當前狀態的執行緒位於 可執行執行緒池 中,變得可執行,只等待獲取cpu的使用權,即當前執行緒獲得了除cpu以外的所有資源。running 正在執行。此時執行緒獲得了cpu的使用權,執行程式 blocked 阻塞狀態。執行緒因為某種原因放棄了...

執行緒狀態轉換

退出方法 沒有設定 timeout 引數的 object.wait 方法 object.notify object.notifyall 沒有設定 timeout 引數的 thread.join 方法 被呼叫的執行緒執行完畢 locksupport.park 方法 locksupport.unpark...

執行緒狀態轉換

建立後尚未啟動。可能正在執行,也可能正在等待 cpu 時間片。包含了作業系統執行緒狀態中的 running 和 ready。等待獲取乙個排它鎖,如果其執行緒釋放了鎖就會結束此狀態。等待其它執行緒顯式地喚醒,否則不會被分配 cpu 時間片。進入方法 退出方法 沒有設定 timeout 引數的 obje...