在停止工作时,手册说
关闭不是立竿见影的,因为没有办法强制立即关闭,特别是如果执行当前是框架无法控制的开发人员代码,例如业务服务。
我的长时间运行步骤执行Thread.currentThread().isInterrupted()
的检查并抛出InterruptedException
。当然有一些方法可以中断运行该作业的线程吗?
(注意:我SimpleAsyncTaskExecutor
使用TaskletStep
)
答案 0 :(得分:1)
创建一个bean来实现
ApplicationListener<ContextClosedEvent> onApplicationEvent()
然后你可以关闭任务。
@Component
class ContextClosedHandler implements ApplicationListener<ContextClosedEvent> {
@Autowired SimpleAsyncTaskExecutor executor;
void onApplicationEvent(ContextClosedEvent event) {
executor.shutdown();
}
}
这篇关于bean生命周期的文章也可能有所帮助