1. 程式人生 > >執行緒的基本狀態以及狀態之間的關係?

執行緒的基本狀態以及狀態之間的關係?

在這裡插入圖片描述
除去起始(new)狀態和結束(finished)狀態,執行緒有三種狀態,分別是:就緒(ready)、執行(runnin g)和阻塞(blocked)。其中就緒狀態代表執行緒具備了執行的所有條件,只等待 CPU 排程(萬事俱備,只欠東 風);處於執行狀態的執行緒可能因為 CPU 排程(時間片用完了)的原因回到就緒狀態,也有可能因為呼叫了線 程的 yield 方法回到就緒狀態,此時執行緒不會釋放它佔有的資源的鎖,坐等 CPU 以繼續執行;執行狀態的執行緒可 能因為 I/O 中斷、執行緒休眠、呼叫了物件的 wait 方法而進入阻塞狀態(有的地方也稱之為等待狀態);而進入阻 塞狀態的執行緒會因為休眠結束、呼叫了物件的 notify 方法或 notifyAll 方法或其他執行緒執行結束而進入就緒狀 態。注意:呼叫 wait 方法會讓執行緒進入等待池中等待被喚醒, notify 方法或 notifyAll 方法會讓等待鎖中的執行緒 從等待池進入等鎖池,在沒有得到物件的鎖之前,執行緒仍然無法獲得 CPU 的排程和執行。