Java ThreadPoolExecutor在一段时间后停止工作

时间:2011-08-09 18:53:03

标签: java concurrency threadpool executor

我遇到ThreadPoolExecutor问题。它工作好几个小时,但有时(随机时间,有时在2分钟或3小时后)它会停止执行提交的任务并且程序挂起。

队列已满,所有核心线程此时都处于活动状态。

我根本不知道这是从哪里来的。特别是因为它有时可以工作3个小时,而所有的核心线程都在工作。

如果有人对我有任何建议,我会非常高兴。

4 个答案:

答案 0 :(得分:1)

取一个look at the stack dump.这将告诉你线程是否处于某种阻塞操作中,等待一个从未发生过,工作或真正陷入僵局的情况。

答案 1 :(得分:0)

我遇到了类似的问题,即执行I / O操作下载网页的代码。在某些时候,有时,在几分钟或几小时内,线程挂起做一些I / O操作并停止工作。

如果是这种情况,请设置堕胎时间。

在调试器中运行代码,当应用程序停止时,查看线程执行的最后方法是什么。

答案 2 :(得分:0)

你可能会在某处发生内存泄漏,并在几小时后导致锁定

答案 3 :(得分:0)

如果您使用的是旧版本的JVM,则可能与http://bugs.sun.com/view_bug.do?bug_id=6822370有关。这在6u18修复。见http://www.oracle.com/technetwork/java/javase/6u18-142093.html