首頁 >Java >Java基礎 >java線程的幾種狀態分別是什麼

java線程的幾種狀態分別是什麼

王林
王林原創
2020-05-14 15:53:012681瀏覽

java線程的幾種狀態分別是什麼

在java執行緒的運行週期中,有以下幾種狀態:

#1、NEW

##該狀態是指線程剛創建,尚未啟動。

2、RUNNABLE

表示線程正在正常運行中,當然可能會有某種耗時計算/IO等待的操作/CPU時間片切換等,這個狀態下發生的等待一般是其他系統資源,而不是鎖、Sleep等。

(影片教學推薦:

java影片

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入門程式

以上是java線程的幾種狀態分別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn