弹簧上下文关闭时停止ConcurrentTaskScheduler

时间:2016-12-06 10:35:33

标签: java spring

我正在用AnnotationConfigApplicationContext编写一个简单的spring应用程序。我的申请表中有ConcurrentTaskScheduler。弹簧上下文关闭时停止ConcurrentTaskScheduler的最佳做法是什么?

更新:主要问题是当Junit关闭@After注释中的上下文时,所有线程都将被终止,但是当我在应用程序结束时手动关闭上下文时,ConcurrentTaskScheduler运行的某些线程将继续运行。 / p>

2 个答案:

答案 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)

我在项目中所做的是,我将作业保存在数据库中,这样我就可以对其进行控制,所以将来我可以从中获取信息并停止。

How to manage/stop spring 4 ConcurrentTaskScheduler