【发布时间】:2016-07-10 05:30:54
【问题描述】:
我有大约 900 个任务。我已将线程池计数设置为 50。 我正在运行一个循环并将每个任务提交给 executorService。
一旦控制出来,我就会如下调用关机
for (Entry<String, String> CurrentJob : Tasks.entrySet()) {
m_service.submit(new MyTask(CurrentJob.getValue(), CurrentJob.getKey()));
}
m_service.shutdown();
每个任务平均需要大约 1 秒。现在我有两个问题
a) 几乎所有人都在做这项工作(850),但大约有 50 个丢失了。我已将调试器置于 callable ,但这些特定任务甚至没有控制。尽管如果我将它们单独放置,它们会起作用。我缺少什么 Executor 服务的逻辑?
b) 我在这段代码周围设置了一个计时器,根据 javaDoc Shutdown 应该等到所有线程都完成,但我的计时器总是说时间为零。
【问题讨论】:
-
您的最大线程池大小是多少?请发布更多代码
标签: java multithreading executorservice