ScheduledExecutorService наследует два метода от ExecutorService, shutdown() и shutdownNow(). Разница между ними:Смесь выключения() и shutdownNow()
shutdown
инициирует упорядоченное завершение работы, в котором выполняются ранее поставленные задачи, но новые задачи не будут приняты. Вызов не имеет дополнительного эффекта, если он уже выключен.
shutdownNow
пытается остановить все активное выполнение задач, останавливает обработку ожидающих задач и возвращает список задач, ожидающих выполнения.
Теперь я хочу прекратить обработку ожидающих задач, пока я не хочу прерывать выполняемые в настоящее время задачи. Я не могу прерывать потоки, потому что сторонние библиотеки задействованы, и они не справляются с прерываниями :-(Но мне нужно отменить scheduled задачи, которые в настоящее время не выполняются, поскольку большинство из них запланировано через час или около того.
Что лучший способ справиться с этим Какие варианты есть ли у меня
Комбинация 'shutdown' и [' awaitTermination'] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html#awaitTermination-long-java. util.concurrent.TimeUnit-) должен сделать трюк. – marcospereira
@marcospereira 'awaitTermination' будет ждать завершения последней запланированной задачи. – steffen