我遇到ThreadPoolExecutor问题。它工作好几个小时,但有时(随机时间,有时在2分钟或3小时后)它会停止执行提交的任务并且程序挂起。
队列已满,所有核心线程此时都处于活动状态。
我根本不知道这是从哪里来的。特别是因为它有时可以工作3个小时,而所有的核心线程都在工作。
如果有人对我有任何建议,我会非常高兴。
答案 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