2011-08-09 138 views
2

我遇到了ThreadPoolExecutor問題。它可以正常工作數小時,但有時(隨機時間,有時在2分鐘或3小時後),它會停止執行提交的任務,程序將掛起。Java ThreadPoolExecutor在一段時間後停止工作

隊列已滿並且此時所有的corethread都處於活動狀態。

我根本不知道這是從哪裏來的。特別是因爲它有時會工作3個小時,而所有的核心線程一直在工作。

如果有人對我有建議,我會很高興。

+2

這是一個僵局。那麼線程之間共享什麼代碼? redneck調試:嘗試在調試模式下運行你的應用程序,並等待它鎖定,連接調試器並暫停jvm,然後你可以看到你的線程在哪一點。 –

+0

如果您懷疑存在死鎖,請轉儲所有線程的堆棧跟蹤。在Windows上,這是通過按Control-Break完成的。看看線程已經同步了什麼以及他們在等什麼。 –

+0

不一定是僵局。 – erickson

回答

0

我有一個類似的問題,執行下載網頁的I/O操作的代碼。有時候,有時在幾分鐘或幾小時內,一個線程會掛起一些I/O操作並停止工作。

如果這是你的情況,請設置一箇中止時間。

在調試器中運行代碼,當應用程序停止時,請查看線程執行的最後一個方法。

0

你可能有內存泄漏的地方,這是一個幾個小時

相關問題