Весенний замес - нить прервать, когда работа останавливается
При остановке работы руководство говорит
Завершение работы не является немедленным, так как нет способа принудительного немедленного завершения работы, особенно если выполнение в данный момент находится в коде разработчика, над которым платформа не имеет контроля, например в бизнес-службе.
Мои длительные шаги выполняют проверки для Thread.currentThread().isInterrupted()
и бросают InterruptedException
. Наверняка есть какой-то способ прервать поток, выполняющий задание?
(Примечание: я использую SimpleAsyncTaskExecutor
с TaskletStep
)
1 ответ:
Создайте боб для реализации
ApplicationListener<ContextClosedEvent> onApplicationEvent()
Тогда вы можете закрыть задачу.
@Component class ContextClosedHandler implements ApplicationListener<ContextClosedEvent> { @Autowired SimpleAsyncTaskExecutor executor; void onApplicationEvent(ContextClosedEvent event) { executor.shutdown(); } }
Этот пост о жизненном цикле бобов также может помочь