2012-12-05 49 views
0

從主線程,我開始一個子線程 裏面的子線程run()方法,調用wait()方法 在main方法調用的子線程的join()方法,不用通知子線程。線程通知問題

我注意到,主線程以及子線程仍在運行,這是一個已知的行爲?爲什麼?

+2

請在這裏發佈代碼。 –

+0

你的意思是線程在調試器中都是「正在運行」嗎?如果是這樣,那是因爲調試器沒有向您顯示線程狀態,而是您是否在調試器中暫停/暫停了線程。 – SamYonnou

+0

當它不在任何同步的上下文中時,你如何調用wait()方法? (至少你沒有提到任何)它應該拋出一個IllegalMonitorStateException。 – clinton

回答

4

通過調用wait,可以阻止子線程直到notify,並且通過調用join來阻塞主線程,直到子線程結束。因此你有一個可預見的死鎖。我不會稱這種行爲只是「已知」,而是「按照指定」。

+0

這是一個「死鎖」。 – 2012-12-05 20:19:05