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

Spring 4@计划停止工作

公冶智刚
2023-03-14

我正在使用@Scheduled annotation运行cron作业。调度工作了一段时间,然后停止工作。我将给出我的代码的简化片段:

这是调度程序:

//org.springframework.scheduling.annotation.Scheduled
@Scheduled("*/30 * * * * *")    
public void performTask() {
    logger.info("Starting agent");
    getAgentAsyncTask().execute();
    logger.info("Ending agent");
}

这是由调度器执行的任务

//org.springframework.scheduling.annotation.Async
@Async(TASK_EXECUTOR)
@Override
public void execute() {
    logger.info("Starting task");
    //send some rest requests
    logger.info("Ending task");
}

“开始代理”和“结束代理”的记录次数相同。所以,每一个日程安排都会正确地结束。

“开始任务”和“结束任务”的记录次数相同。所以,毫无疑问,“任务”并不是阻止事情。

但是过了一段时间就停止记录了。有什么问题吗?

这里,TASK_EXECUTOR是以下bean

 @Bean(TASK_EXECUTOR)
 public ThreadPoolTaskExecutor createDefaultTaskExecutor() {
          ThreadPoolTaskExecutor te = new ThreadPoolTaskExecutor();
          te.setMaxPoolSize(15);
          te.setCorePoolSize(15);
          te.initialize();
          return te;
    }

Spring版:

4.1.6.释放

共有2个答案

商同
2023-03-14

看看是否作业被挂起或不. incase如果它做...该任务将不执行一段时间后我的意思是在达到最大池大小.检查你实现代码是否线程被释放后成功执行。

邢高爽
2023-03-14

这种情况可能是由调度方法主体中的无限循环引起的,或者如果有对外部系统的调用,并且控件同步等待接收响应而没有任何超时。

用这个简单的代码片段自己尝试一下。该方法只会启动一次,在指定的5秒间隔后不会启动。

@Scheduled(fixedRate = 5000)
public void printPeriodically() {
    System.out.println("This is my periodic method");
    while(true) {};
}
 类似资料:
  • 我正在使用ScheduledExecutorService并对其进行初始化(ScheduledExecutorService scheduledThreadPool=Executors.NewScheduledThreadPool(20);)这样我就不会每次都创建新线程。然后,我使用计划“executorService.schedule(new Runnable(),20,timeUnit.sec

  • 我们有10个计划任务,配置为每20秒运行一次,带有以下注释(它们在晚上停止,因为依赖系统在早上4点重新启动): 我们有一个线程池taks调度器,配置池大小为10: 有时在一天中,其中一项任务在一两个小时内没有执行,然后继续定期执行。有没有可能其中一个任务正在阻止其他任务?我怎样才能知道情况是否如此?

  • 问题内容: 我已将一个WAR文件部署到Tomcat服务器,该类之一将在启动时调用,然后init()方法将安排一个计时器,每5小时触发一次以执行一些任务。 我的init()代码如下所示: 我的应用程序运行没有问题,但是当我使用 /etc/init.d/tomcat7 stop 关闭Tomcat时,我检查了日志(catalina.out),它具有以下条目: 严重:Web应用程序[/ MyApplica

  • 问题内容: 我正在使用类,并且正在使用其schedule方法执行某些任务,但是在执行了6次之后,我必须停止其任务。 我该怎么办? 问题答案: 在某个地方保留对计时器的引用,并使用: 停止所做的一切。您可以将此代码放在正在执行的任务中,以计算您经过的次数,例如

  • null GrantPermissionRule是否停止了为其他人所宣传的工作?

  • 我在使用Spring 3.1.1,在WAS8.5环境中,使用Spring的@计划功能每天每8小时运行一次任务。它开始并运行了一段时间,然后无缘无故地停止。我的日志中没有任何内容表明失败。知道是什么导致了这种情况吗?现在已经发生过几次了。这不是由于服务器重启等原因。 我的应用程序上下文。xml 我的调度程序。属性 我知道我可以在一行上每8小时设置一次CRON parm,但是用户可以在他们想要的方面获