JAVA並發編程5_線程狀態

來源:互聯網
上載者:User

標籤:java   多線程   

JAVA線程的可能處於一下幾種狀態,任意的時間點一個線程只能處於一個狀態。

1. 建立狀態(New):建立後尚未啟動的線程處於這種狀態。

轉移時機:建立一個新線程。

2. 就緒狀態(Runnable):調用了start()方法,該狀態的線程位於可運行線程池中,變得可運行,等待擷取CPU的使用權。

轉移時機:調用start()方法。

處於Running狀態的線程被CPU選擇執行其他線程。

執行Thread.yeild(),不保證。

3. 運行狀態(Running):就緒狀態的線程獲得的了CPU的執行權,正在執行run方法。

轉移時機:獲得了CPU的執行權。

4. 阻塞(Blocked):啟動並執行線程在擷取對象的同步鎖時,若該同步鎖被別的線程佔用,則JVM會把該線程放入鎖池中。

轉移時機:已經有其他線程正在執行同步程式碼片段,等待同步鎖。

5. 無期限等待(Waiting):不會被分配CPU的執行事件,要等待被其他線程顯式的喚醒,以下方法導致線程陷入無期限等待:

轉移時機:未設定timeout參數的Object.wait()方法

未設定timeout參數的Thread.join()方法

6. 期限等待(Time Waiting):也不會被分配CPU執行事件,不過無需等待其他線程顯式的喚醒,在一定時間之後會由系統自動喚醒。以下方法導致線程陷入期限等待:

轉移時機:設定Timeout參數的Object.wait()方法

設定Timeout參數的Thread.join()方法

Thread.sleep(long)方法

7. 結束(Terminated):線程執行完了,run方法退出。

JAVA並發編程5_線程狀態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.