溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java線程的狀態有哪幾種

發布時間:2021-07-22 09:05:18 來源:億速云 閱讀:163 作者:chen 欄目:大數據

這篇文章主要講解了“Java線程的狀態有哪幾種”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java線程的狀態有哪幾種”吧!



Java 線程狀態轉換圖


Java線程的狀態有哪幾種

Java 線程狀態


在 Java 線程的生命周期中,按復雜的并發場景考慮,可將 Java 線程的狀態分為七種,分別是:新建,可運行,運行,無限期等待,限期等待,阻塞,結束。

 

1. 新建(New)狀態

新創建一個線程對象,尚未執行。

2. 可運行(Runnable 或 Ready)狀態

新創建的線程調用 start 方法后便處于 Runnable 狀態,剛剛結束等待(獲取到鎖)或阻塞狀態的線程也會處于 Runnable 狀態,處于該狀態的線程位于可運行線程池中,等待獲取 CPU 資源。

 

3. 運行(Running)狀態

處于 Runnable 狀態的線程獲取到 CPU 資源,執行程序代碼。

 

4. 無限期等待(Waiting)狀態

synchronized 代碼塊內被鎖住的對象調用了它的 wait() 方法或者在當前線程中調用了其他線程的 join() 方法,那么當前線程將會釋放占有的鎖,釋放 CPU 資源,阻塞在等待隊列里面,一直等待被 synchronized 修飾的對象調用 notify() 或 notifyAll() 方法喚醒或者 join 的其他線程執行結束(異常退出)。在并發時,處于無限期等待狀態的線程被喚醒之后,還要去競爭對象的鎖,如果競爭不到,線程將會被阻塞在對象的鎖池中,競爭到鎖之后,線程將會處于 Runnable 狀態。

5. 限期等待(Timed Waiting)狀態

與無限期等待(Waiting)狀態不同之處在于,調用 wait 和 join 方法時傳入了等待限定時間。另外,線程調用 sleep() 方法也會處于限期等待(Timed Waiting)狀態,會釋放 CPU 資源,但并不會釋放鎖,一直到休眠結束變成 Runnable 狀態。

6. 阻塞(Blocked)狀態

線程程序執行到 synchronized 代碼塊或 Reentrant.lock() 方法,對象的鎖被其他線程占用時,當前線程將會被阻塞在對象的鎖池中,處于阻塞(Blocked)狀態。

 

7. 結束(Terminated)狀態

線程 run 方法執行完畢或者異常退出,則該線程的生命周期終結,不能再次使用。


感謝各位的閱讀,以上就是“Java線程的狀態有哪幾種”的內容了,經過本文的學習后,相信大家對Java線程的狀態有哪幾種這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女