線程共有6種狀態(tài);在某一時刻只能是這6種狀態(tài)之一,。這些狀態(tài)由Thread.State這個枚舉類型表示,并且可以通過getState()方法獲得當前具體的狀態(tài)類型,。 NEW 至今尚未啟動的線程的狀態(tài),。 當使用new一個新線程時,如new Thread(r),,但還沒有執(zhí)行start(),線程還沒有開始運行,這時線程的狀態(tài)就是NEW。 RUNNABLE 可運行線程的線程狀態(tài),。 當start()方法被調用時,,線程就進入RUNNABLE狀態(tài)。此時的線程可能正在運行,,也可能沒有運行 BLOCKED 受阻塞并且正在等待監(jiān)視器鎖的某一線程的線程狀態(tài),。 下列情況會進入阻塞狀態(tài): 1.等待某個操作的返回,例如IO操作,,該操作返回之前,,線程不會繼續(xù)下面的代碼。 2.等待某個“鎖”,,在其他線程或程序釋放這個“鎖”之前,,線程不會繼續(xù)執(zhí)行。 3.等待一定的觸發(fā)條件,。 4.線程執(zhí)行了sleep方法,。 5.線程被suspend()方法掛起。 一個被阻塞的線程在下列情況下會被重新激活: 1.執(zhí)行了sleep()方法,,睡眠時間已到,。 2.等待的其他線程或程序持有的“鎖”已被釋放。 3.正在等待觸發(fā)條件的線程,,條件得到滿足,。 4.執(zhí)行了suspend()方法,被調用了resume()方法,。 5.等待的操作返回的線程,,操作正確返回。 WAITING 某一等待線程的線程狀態(tài),。 線程因為調用了Object.wait()或Thread.join()而未運行,,就會進入WAITING狀態(tài)。 TIMED_WAITING 具有指定等待時間的某一等待線程的線程狀態(tài),。 線程因為調用了Thread.sleep(),,或者加上超時值來調用Object.wait()或Thread.join()而未運行,則會進入TIMED_WAITING狀態(tài),。 TERMINATED 已終止線程的線程狀態(tài),。 線程已運行完畢。它的run()方法已正常結束或通過拋出異常而結束,。 線程的終止 run()方法結束,,線程就結束。 |
|
來自: hkls0003 > 《java_Concurrency》