我正在用AnnotationConfigApplicationContext
编写一个简单的spring应用程序。我的申请表中有ConcurrentTaskScheduler
。弹簧上下文关闭时停止ConcurrentTaskScheduler
的最佳做法是什么?
更新:主要问题是当Junit关闭@After注释中的上下文时,所有线程都将被终止,但是当我在应用程序结束时手动关闭上下文时,ConcurrentTaskScheduler
运行的某些线程将继续运行。 / p>
答案 0 :(得分:1)
让Spring自己处理关闭。
将ScheduledExecutorService传递给ConcurrentTaskScheduler 然后添加一个带有anotation的方法@PreDestroy,其中关闭ScheduledExecutorService。
@PreDestroy
public void cleanUp() throws InterruptedException {
scheduleExecutorService.shutdown();
try {
scheduleExecutorService.awaitTermination(10000, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
scheduleExecutorService.shutdownNow();
throw e;
}
}
答案 1 :(得分:-1)
我在项目中所做的是,我将作业保存在数据库中,这样我就可以对其进行控制,所以将来我可以从中获取信息并停止。