Spring Scheduler不会在循环后停止,而是在停止和重新触发之前运行1分钟


@Slf4j
@Component
public class ABScheduler {
@Autowired
private ABService abService;
@Scheduled(cron="* */5 * * * *")
private void testCron(){
String hour = "01";
List<Object1> object1List = new ArrayList<>(abService.getListOfobject(hour));
for(Object1 object1: object1List ){
System.out.println("object " +object1);
}
log.info("Cron finish run at "+ new Timestamp(System.currentTimeMillis()) );
}
}

我是这个调度器弹簧的新手,我发现在for循环后让它停止很麻烦。在获得object1List中的对象列表(即3对象(后,它进入循环3次(正确(。但相反,在循环3次后停止cron,它会再次循环1分钟。。

我需要做的是确保cron每5分钟运行一次,但在完成任务后停止,而不是在1分钟内循环相同的任务

您应该在项目中添加@EnableScheduling anotation。

你的cron每秒钟都在运行。(您的cron秒值=*(

如果你只想在五分钟内只工作一次,可以试试:@Scheduled(cron="0 */5 * * * *")

cron格式:

┌───────────── second (0-59)
│ ┌───────────── minute (0 - 59)
│ │ ┌───────────── hour (0 - 23)
│ │ │ ┌───────────── day of the month (1 - 31)
│ │ │ │ ┌───────────── month (1 - 12) (or JAN-DEC)
│ │ │ │ │ ┌───────────── day of the week (0 - 7)
│ │ │ │ │ │          (0 or 7 is Sunday, or MON-SUN)
│ │ │ │ │ │
* * * * * *

资源:Spring Framework CronExpression

相关内容

  • 没有找到相关文章

最新更新