我有一个问题与ThreadPoolExecutor。它可以正常工作几个小时,但有时(在随机时间,有时在2分钟或3小时后)它停止执行提交的任务,程序挂起。
队列已满,此时所有核心线程都处于活动状态。
我根本不知道这是从哪里来的。特别是当所有的核心线程都在工作时,它有时会工作3个小时。
如果有谁能给我一个建议,我将非常高兴。
看一下堆栈转储。这将告诉您线程是否处于阻塞操作中,等待一个永远不会发生、正在工作或真正死锁的条件。
我有一个类似的问题与代码做I/O操作下载网页。在某一时刻,有时,在几分钟或几小时内,线程挂起执行某些I/O操作并停止工作。
如果您是这种情况,请设置流产时间。
在调试器中运行代码,当应用程序停止时,查看线程执行的最后一个方法是什么。
您可能在某个地方有内存泄漏,导致几个小时后锁定
如果您使用的是旧版本的JVM,它可能与http://bugs.sun.com/view_bug.do?bug_id=6822370有关。这是在6u18修复。见http://www.oracle.com/technetwork/java/javase/6u18 - 142093. - html