【发布时间】:2013-04-10 23:21:44
【问题描述】:
我们正在使用通过 ExecutorService#newCachedThreadPool 创建的 CachedThreadPool。 (Java 1.6)。我们在代码的其他地方遇到错误:“无法创建新的本机线程”,我们已将其诊断为内存不足问题。当这个问题发生时,我们调用提交的代码块(我们使用提交,而不是执行)会变慢。我们怀疑 ThreadPool 在尝试创建新线程来处理任务时遇到了同样的问题“无法创建新的本地线程”,但我们不能确定。
有没有办法从 ExecutorService 内部捕获异常? 100% 清楚,我说的不是交给 ExecutorService 的任务,而是来自 ExecutorService 本身。
【问题讨论】:
-
也许你应该做一个线程转储并查看所有这些线程的去向。这不应该发生。
-
这绝对是系统负载问题。我知道它不应该去。这是由于下游依赖失败并且我们有重试逻辑。线程全部排队等待重试。
标签: java executorservice