Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止Spring启动计划程序关闭中的线程中断_Java_Spring Boot - Fatal编程技术网

Java 防止Spring启动计划程序关闭中的线程中断

Java 防止Spring启动计划程序关闭中的线程中断,java,spring-boot,Java,Spring Boot,我有一个spring boot应用程序,它使用@Scheduled注释按计划运行任务 关闭时,如果计划任务正在运行,我希望允许它完成 我首先在java运行时(runtime.getRuntime().addShutdownHook(…))中添加了一个shutdownhook,以简单地等待,但我的任务仍然被中断——几乎是立即中断的 因此,我开始研究这是否与计划任务有关,并尝试了以下方法: @Bean public TaskScheduler taskScheduler() {

我有一个spring boot应用程序,它使用
@Scheduled
注释按计划运行任务

关闭时,如果计划任务正在运行,我希望允许它完成

我首先在java运行时(
runtime.getRuntime().addShutdownHook(…)
)中添加了一个shutdownhook,以简单地等待,但我的任务仍然被中断——几乎是立即中断的

因此,我开始研究这是否与计划任务有关,并尝试了以下方法:

    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setWaitForTasksToCompleteOnShutdown(true);
        scheduler.setAwaitTerminationSeconds(60);
        scheduler.initialize();
        return scheduler;
    }

问题是,这实际上似乎也没有保护正在运行的代码不受线程中断的影响,而且我仍然在计划任务中遇到了
意外错误,原因是
java.lang.InterruptedException
com.amazonaws.http.timers.client.SdkInterruptedException

我可能会添加一个关机钩子,它不会依赖于spring boot中的任何魔法,这是一个很好的例子:实际上我也有一个关机钩子,但它不起作用(这让我开始研究taskScheduler)