【发布时间】:2014-03-21 14:36:18
【问题描述】:
我有一个 Java ExecutorService(固定线程池为 1),我将可运行任务传递给它以供将来执行。每个任务通常在 10 秒内完成。 ExecutorService 只是简单地完成任务。如果我关闭我的应用程序,我会运行以下命令;
if (taskProcessor != null) {
taskProcessor.shutdownNow();
while (!taskProcessor.isTerminated()) {
// Wait For All Submitted Tasks To Finish
}
}
问题是它似乎需要一段时间才能关闭,有时可能需要几分钟,有时它似乎永远不会关闭,有时它会在几秒钟内关闭!执行程序队列中的任何时候都可能有多达 2000 个任务,但我只是希望它完成当前正在执行的任务并退出。我在这里做错了什么?
【问题讨论】:
-
忙着等待并不是一个好主意。
标签: java multithreading executorservice java.util.concurrent