3

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

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

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

如果有人对我有建议,我会很高兴。

4

4 回答 4

1

一下堆栈转储。这将告诉您线程是否处于某种阻塞操作、等待从未发生、工作或真正死锁的条件。

于 2011-08-10T19:45:03.077 回答
0

I had a similar problem with a code that do I/O operations downloading web pages. At some point, sometimes, in minutes or hours, a thread hangs doing some I/O operation and stop to work.

If this is your case, set an abortion time.

Run your code in a debugger and when your application stop, see what were the last methods that your threads executed.

于 2011-08-10T19:37:15.233 回答
0

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

于 2011-11-14T21:21:29.527 回答
0

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

于 2011-08-10T19:55:49.083 回答