当前位置: 首页 > 知识库问答 >
问题:

在Spring boot中运行调度程序会产生Spring boot应用程序上下文外部的进程

仲孙诚
2023-03-14
private void scheduleTask(Store store, int frequency) {
        final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        Runnable task = store::scan;
        scheduler.scheduleAtFixedRate(task, 0, frequency, TimeUnit.MILLISECONDS);
    }

这可以正常工作,但如果在应用程序启动时出现异常,则应用程序应在异常时退出。发生的情况是,我在日志中得到了异常和消息“Application Failed to Start”,但调度程序显示为仍在运行,尽管看起来只有调度的线程仍在运行。

有没有关于如何在Spring Boot应用程序中正确安排异步任务的提示?我尝试了@scheduled注释,但它根本不运行。

共有1个答案

麹权
2023-03-14

@schedule应该可以工作。您是否将@enabledscheduling批注添加到@configuration@springbootapplication中?《日程安排入门》对此进行了详细说明。

关于scheduletask方法:什么调用它?它是在Spring上下文之外开始的吗?如果是的话,Spring也不会阻止它。你得照顾生命周期。

您应该尝试使用@schedule,因为它将为您管理线程池/执行器,大多数人会发现它更容易理解。

 类似资料:
  • 是否有任何专家在使用spingdge调度程序时遇到问题? 我试着设置它在工作日的下午2点到晚上10点之间每小时运行15分钟,但是好像是按分钟触发的,这是因为我的cron出错了还是我应该做smthg来控制它? 通过springboot-web-started在linux服务器上运行 版本

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 2020-06-26T09:26:58.880610+00:00Heroku[web.1]:状态从开始更改为>崩溃2020-06-26T12:16:58.291701+00:00Heroku[web.1]:状态从崩溃更改为>开始2020-06-26T12:17:05.611518+00:00Heroku[web.1]:用命令启动进程>2020-06-26T12:17:08.625648+00:00

  • 我已经使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包生成了一个Spring Boot web应用程序。 使用的技术: Spring启动2.0.0。M6,Java8, Maven 这是我的安全配置 在我的 但当我在http://localhost:1234/iberiaWebUtils,而不是去http://localhost:1234/ibe