У меня есть Java ExecutorService (Fixed Thread Pool из 1), в который я передаю выполняемые задачи для будущего выполнения. Каждая задача обычно завершается в течение 10 секунд. Служба ExecutorService просто выполняет свои задачи. Если я выключу свое приложение, я запустил следующее:Java ExecutorService ShutdownNow принимает меры
if (taskProcessor != null) {
taskProcessor.shutdownNow();
while (!taskProcessor.isTerminated()) {
// Wait For All Submitted Tasks To Finish
}
}
Проблема заключается в том, что, кажется, занимает возраст для него для завершения работы, иногда это может занять несколько минут, иногда кажется, никогда не отключается и иногда отключений в считанные секунды! В любой момент в очереди исполнителей потенциально может быть около 2000 задач, но я просто хочу, чтобы она завершила выполнение текущей задачи и прекратила работу. Что я здесь делаю неправильно?
Занятое ожидание редко является хорошей идеей. – Raedwald