Вопрос

я использую Планируемоеexecutorservice, и после того, как я позвоню, это неисправность Метод, я не могу запланировать на нем заново. Призыв scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS) после shutdown() бросает java.util.concurrent.rejectedExecutionException. Есть ли другой способ запустить новую задачу после shutdown() вызывается Планируемоеexecutorservice?

Это было полезно?

Решение

Вы можете повторно использовать планировщику, но вы не должны его закрыть. Скорее, отмените бегущую резьбу, которую вы можете получить при вызове метода ScoreletFixedRate. Бывший:

//get reference to the future
Future<?> future = service.scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS)
//cancel instead of shutdown
future.cancel(true);
//schedule again (reuse)
future = service.scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS)
//shutdown when you don't need to reuse the service anymore
service.shutdown()

Другие советы

Javadocs shutdown() сказать:

Initiates an orderly shutdown in which previously submitted tasks are executed,
but no new tasks will be accepted.

Итак, вы не можете позвонить shutdow() а затем расписание новых задач.

Вы не можете заставить свой исполнитель принять новые задачи после его выключения. Более актуальным вопросом, поэтому вам нужно закрыть его в первую очередь? Участок, которые вы создаете, должны быть повторно использованы в течение всей жизни вашего приложения или подсистемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top