何時線程到達終止狀態?當達到run()
方法的末尾時它會終止嗎?如何檢查線程是否終止?
那麼檢查線程是否終止的正確方法是什麼?因爲以下條件似乎對我而言總是如此
if(!(thread.getState()).equals("TERMINATED")){}
任何想法?
何時線程到達終止狀態?當達到run()
方法的末尾時它會終止嗎?如何檢查線程是否終止?
那麼檢查線程是否終止的正確方法是什麼?因爲以下條件似乎對我而言總是如此
if(!(thread.getState()).equals("TERMINATED")){}
任何想法?
首先完成:Thread.getState()
返回Thread.State
,這將永遠等於String
,所以你需要編寫這樣的代碼:
if(thread.getState()!=Thread.State.TERMINATED){ }
和是:當run()
方法結束(正常或因爲它拋出異常),那麼Thread
將轉到TERMINATED
狀態。
測試方法thread.isAlive()
...或者任選,加入直到它與thread.join()
謝謝,@Art,修復。 – 2011-05-06 12:41:13
'是的:當run()方法結束時(正常或因爲它引發異常),那麼線程將進入TERMINATED狀態。「事實上並非如此,w /異常執行異常,它調用'UncaughtExceptionHandler '它可以隨心所欲地做任何事情。 (包括諸如'Thread.currentThread()。run()')之類的東西,線程處於terminate狀態在exit()方法之後,它可以阻止(無限地)在ThreadGroup同步。 – bestsss 2011-05-06 13:23:54
@bestsss:那裏我希望沒有人注意到這個小漏洞;-)是的,你當然是對的。 – 2011-05-06 13:30:35