除去起始(new)狀態和結束(finished)狀態,線程有三種狀態,分別是:就緒(ready)、運行(running)和阻塞(blocked)。其中就緒狀態表明線程具有了運行的全部條件,只等待CPU調度(萬事俱備,只欠東風);處於運行狀態的線程可能由於CPU調度(時間片用完了)的緣由回到就緒狀態,也有可能由於調用了線程的yield方法回到就緒狀態,此時線程不會釋放它佔有的資源的鎖,坐等CPU以繼續執行;運行狀態的線程可能由於I/O中斷、線程休眠、調用了對象的wait方法而進入阻塞狀態(有的地方也稱之爲等待狀態);而進入阻塞狀態的線程會由於休眠結束、調用了對象的notify方法或notifyAll方法或其餘線程執行結束而進入就緒狀態。注意:調用wait方法會讓線程進入等待池中等待被喚醒,notify方法或notifyAll方法會讓等待鎖中的線程從等待池進入等鎖池,在沒有獲得對象的鎖以前,線程仍然沒法得到CPU的調度和執行。spa
總結:把圖理解記清楚就很好記了線程