執行緒建立後,並不會立刻執行,可是要和其他執行緒搶占cpu資源。執行緒從建立到滅亡有七個狀態。
首先看不包含其他路徑的乙個執行緒狀態流轉圖:
當然,執行緒的執行並不是一帆風順的,其中有很多情況需要考慮。下面增加兩種情況:sleeping、wait。sleeping是一種超時等待,時間結束後,繼續去爭用cpu資源。wait就是一種等待,除非執行notify或notifyall。
有個這張圖後,我們去看**。
public
class
newthread
implements
runnable
public
static
void
main
(string[
] args)
}
下面演示子執行緒wait狀態,主線程notifyall喚醒它。
public
class
newthread
implements
runnable
catch
(interruptedexception e)
system.out.
println
("自定義的執行緒執行啦!");
}}public
static
void
main
(string[
] args)
catch
(interruptedexception e)
thread.
notifyall()
;}}}
}
執行結果
主線程
主線程主線程
主線程主線程
主線程主線程
主線程主線程
主線程主線程
主線程主線程
主線程主線程
主線程主線程
自定義的執行緒執行啦!
主線程主線程
主線程
Java執行緒 執行緒狀態
執行緒可以建立6狀態 new 新建立 runnable 可執行 blocked 被阻塞 waiting 等待 timed waiting 計時等待 terminated 被終止 1 新建執行緒 2 可執行執行緒 一旦呼叫start 方法,執行緒就處於runnable狀態,但是卻不必保持執行。執行中的...
java執行緒的狀態
new 狀態是指執行緒剛建立,尚未啟動 runnable 狀態是執行緒正在正常執行中,當然可能會有某種耗時計算 io等待的操作 cpu時間片切換等,這個狀態下發生的等待一般是其他系統資源,而不是鎖,sleep等 blocked 這個狀態下,是在多個執行緒有同步操作的場景,比如正在等待另乙個執行緒的s...
java執行緒的狀態
新建 mythreadinfo 類,列印執行緒物件屬性,如下 public class mythreadinfo extends thread public static void main string args 執行 列印如下 mythreadinfo 的執行緒例項正在執行任務 mythread...