java.lang.Thread
對象在其run()
完成執行後保持活動狀態的原因是什麼?爲了幫助理解這個問題,當run()
完成時,線程是如何從ThreadGroup
中刪除的?運行後java線程對象保持活動狀態()完成
更新:Thread
保持活動狀態的對象與Thread
活動/活動狀態不同。當我問這個問題時,我正在調試Thread
對象泄漏(而不是Thread
泄漏)。對於基於GNU Classpath的JDK(Harmony應該是其中之一,對嗎?),Thread
被添加到ThreadGroup
的構造函數Thread.<init>
中,並且創建但未啓動的Thread
將泄漏(即無論run()
是否完成都保持活動狀態)。在熱點,Thread
被添加到ThreadGroup
在Thread.start()
,這似乎更有意義。換句話說,它僅在啓動時才被添加,並且如果run()
未掛起,則保證被刪除。請注意,ThreadGroup
被視爲GC根。
我100%確定run()完成,因爲在Eclipse調試模式下,線程沒有顯示在活動線程列表中。 – dacongy
可以給我們發送代碼!否則沒有人可以幫助更多的猜測! – ehsun7b
@ehsun你的意思是'你能*編輯*代碼*到你的文章*'中。 – EJP