2013-11-28 83 views
-4

兩個線程(t1和t2)正在運行。 t1在t2上調用加入。假設t2由於某種異常而死亡,那麼等待線程t1的行爲是什麼,即線程t1將無限期地保持阻塞狀態,或者在一段時間後恢復到可運行狀態......不清楚關於行爲,更具體地說是背後的理由。Java線程的併發性

+7

您可以輕鬆地嘗試此操作。 – Maroun

+0

'JDK + IDE = Answer' –

+0

歡迎來到StackOverflow。請閱讀http://stackoverflow.com/about的關於頁面 - 您可以閱讀關於提問的一些簡單規則;其中之一是:「不要問你還沒有試圖找到答案(顯示你的工作!)」。所以,在將來,請先嚐試自己找到答案(例如嘗試和閱讀API文檔)。然後創建問題並告訴我們,你做了什麼(例如閱讀和嘗試)以及爲什麼它沒有解決你的問題/問題(例如,文檔不可理解,測試的行爲如預期)。 –

回答

0

the javadoc

等待該線程死亡。

所以,當線程死亡時,join()返回。

1

的Javadoc開始說的Thread.join(long)

此實現使用this.wait電話空調上this.isAlive的循環。當一個線程終止時,調用this.notifyAll方法。

這是描述爲Thread.isAlive()

測試線程是否還活着。如果一個線程已經啓動並且還沒有死亡,那麼這個線程是活着的。

您可以假設線程的實現可以防止在run()方法中發生異常。因此,在任何情況下,當run方法終止時(無論是否正常或因異常),可以繼續等待join()的其他線程。

至於理由:這當然是爲了讓你的程序不會陷入無盡的等待狀態。