您好,登錄后才能下訂單哦!
今天小編就為大家帶來一篇有關java線程狀態的文章。小編覺得知識點挺全面的,為此分享給大家做個參考。一起跟隨小編過來看看吧。
1、NEW
該狀態是指線程剛創建,尚未啟動。
2、RUNNABLE
表示線程正在正常運行中,當然可能會有某種耗時計算/IO等待的操作/CPU時間片切換等,這個狀態下發生的等待一般是其他系統資源,而不是鎖、Sleep等。
3、BLOCKED
此狀態下,是在多個線程有同步操作的場景,比如正在等待另一個線程的synchronized 塊的執行釋放,或者可重入的 synchronized塊里別人調用wait() 方法,也就是說這里是線程在等待進入臨界區。
4、WAITING
這個狀態下是指線程擁有了某個鎖之后, 調用了他的wait方法, 等待其他線程/鎖擁有者調用 notify / notifyAll 一遍該線程可以繼續下一步操作。
這里要區分 BLOCKED 和 WATING 的區別,一個是在臨界點外面等待進入, 一個是在理解點里面wait等待別人notify, 線程調用了join方法 join了另外的線程的時候, 也會進入WAITING狀態, 等待被他join的線程執行結束。
5、TIMED_WAITING
這個狀態就是有限的(時間限制)的WAITING, 一般出現在調用wait(long)、join(long)等情況下, 另外一個線程sleep后, 也會進入TIMED_WAITING狀態。
6、TERMINATED
這個狀態下表示該線程的run方法已經執行完畢了, 基本上就等于死亡了(當時如果線程被持久持有, 可能不會被回收)。
看完上述內容,你們對java線程的幾種狀態大概了解了嗎?如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。