線程狀態圖

線程的各個狀態之間如何轉換

一、就緒狀態

1.調用start方法,線程進入就緒狀態

2.阻塞狀態解除,例如join方法或者sleep方法,nodify方法執行後,線程從阻塞狀態進入到就緒狀態

3.從運行狀態轉換到就緒狀態:調用yield方法

4.jvm本身從本地線程切換到其他線程,則本地線程進入就緒狀態

二、運行狀態

強調:運行狀態一定是從就緒狀態通過調度進入到運行狀態,具體如何進入到運行狀態取決於cpu的調度

三、阻塞狀態

強調:一定是從運行狀態進入到阻塞狀態

1.調用sleep方法從運行狀態進入到阻塞狀態

2.調用wait方法進入到阻塞狀態

3.調用join方法進入到阻塞狀態

4.IO流的read方法和write方法也會讓線程進入到阻塞狀態,等待操作系統對IO流的調度後繼續執行(所以後續有了NIO的出現)

四、死亡狀態

1.調用stop方法(不推薦使用)

2.調用destroy方法

3.線程執行完run方法後,被回收

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章