執行緒的狀態

2022-06-30 09:30:17 字數 760 閱讀 4536

1. 新建(new):新建立了乙個執行緒物件。

2. 可執行(runnable):執行緒物件建立後,其他執行緒(比如main執行緒)呼叫了該物件的start()方法。該狀態的執行緒位於可執行執行緒池中,等待被執行緒排程選中,獲取cpu 的使用權 。

3. 執行(running):可執行狀態(runnable)的執行緒獲得了cpu 時間片(timeslice) ,執行程式**。

4. 阻塞(blocked):阻塞狀態是指執行緒因為某種原因放棄了cpu 使用權,也即讓出了cpu timeslice,暫時停止執行。直到執行緒進入可執行(runnable)狀態,才有機會再次獲得cpu timeslice 轉到執行(running)狀態。阻塞的情況分三種: 

(一). 等待阻塞:執行(running)的執行緒執行o.wait()方法,jvm會把該執行緒放入等待佇列(waitting queue)中。

(二). 同步阻塞:執行(running)的執行緒在獲取物件的同步鎖時,若該同步鎖被別的執行緒占用,則jvm會把該執行緒放入鎖池(lock pool)中。

(三). 其他阻塞:執行(running)的執行緒執行thread.sleep(long ms)或t.join()方法,或者發出了i/o請求時,jvm會把該執行緒置為阻塞狀態。當sleep()狀態超時、join()等待執行緒終止或者超時、或者i/o處理完畢時,執行緒重新轉入可執行(runnable)狀態。

5. 死亡(dead):執行緒run()、main() 方法執行結束,或者因異常退出了run()方法,則該執行緒結束生命週期。死亡的執行緒不可再次復生。

執行緒的狀態

執行緒的狀態 概念 乙個時刻,cpu只能運算乙個執行緒的任務。對於執行緒來說,有cpu的執行資格或者cpu的執行權。cpu的執行資格 可以被cpu處理,但還沒有輪到自己,在處理佇列中排隊。cpu的執行權 正在獲取cpu的資格 執行緒有五種狀態 1 被建立。在這個時候,執行緒剛剛被建立出來,開闢了記憶...

執行緒的狀態

有時候需要一些工具幫助我們觀察執行緒和程序的狀態 spy 開啟預設是視窗 旁邊是 程序和執行緒 選擇乙個程序 右鍵屬性 常規 不重要 記憶體 虛擬位元組的記憶體 專用位元組 可用位元組 頁檔案 空格鍵 記憶體資訊 選擇乙個執行緒 右鍵屬性 執行緒id 程序id 起始位址 執行緒狀態 上下文開關 執行...

執行緒的狀態

學習自 新建new thread 就緒thread.start 執行using cpu,就算時間片在切換,他在不使用當前時間片的時候,依然被定義成執行狀態 阻塞比如釋放資源,比如object.wait。需要重新轉化為就緒狀態才有機會轉化成執行狀態 死亡阻塞的幾種情況 1.this.wait,該執行緒...