在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線程的幾種狀態分別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!