在Java中,線程有5中不同狀態(tài),分別是:新建(New)、就緒(Runable)、運(yùn)行(Running)、阻塞(Blocked)和死亡(Dead)。它們之間的轉(zhuǎn)換圖如下:
上圖有一個例外,調(diào)用yield()方法可以讓當(dāng)前處于運(yùn)行狀態(tài)的線程轉(zhuǎn)入就緒狀態(tài)。如果要測試某線程是否已經(jīng)死亡,可以使用isAlive()方法,該方法在線程處于就緒、運(yùn)行、阻塞時(shí)放回true,新建和死亡時(shí)返回false。不要試圖對一個已經(jīng)死亡的線程調(diào)用start()方法而重新啟動,死亡就是死亡和人一樣,不可能再生。還有也不要對一個線程調(diào)用兩次start()方法,這同樣會引發(fā)異常。