首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一天运行两次的SpringBoot调度程序表达式

一天运行两次的SpringBoot调度程序表达式
EN

Stack Overflow用户
提问于 2019-08-20 08:16:27
回答 1查看 1.6K关注 0票数 0

您好,我正在使用下面的SpringBoot cron表达式来运行我的计划作业,每天两次。它应该在上午10点和下午4点运行。

代码语言:javascript
复制
@Scheduled(cron = "0 0 10,16 * * *")

我在下午3:30启动了Springboot应用程序,它在下午4点触发了计划的作业,但第二天它没有在上午10点触发作业

上面的cron表达式有什么问题吗?请注意,这不是unix cron表达式。根据SpringBoot文档,它只需要6个参数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-20 11:15:18

cron表达式是正确的。应该还有其他问题导致您的cron作业不能按预期运行。

在内部,Spring使用CronSequenceGenerator为cron表达式生成下一个触发时间。要证明您的cron表达式配置正确,可以尝试使用CronSequenceGenerator

例如,下面的函数将简单地打印出cron表达式的下10个触发时间:

代码语言:javascript
复制
 public static void printNextTriggerTime(String cronExpression, LocalDateTime currentTime) {
        CronSequenceGenerator generator = new CronSequenceGenerator(cronExpression);
        Date d = Date.from(currentTime.atZone(ZoneId.systemDefault()).toInstant());
        for (int i = 0; i < 10; i++) {
            d = generator.next(d);
            System.out.println(d);
        }
    }

如果我输入cron表达式和开始时间:

代码语言:javascript
复制
    printNextTriggerTime("0 0 10,16 * * *", LocalDateTime.of(2019, 8, 20, 15, 30, 0));

它将输出:

代码语言:javascript
复制
Tue Aug 20 16:00:00 HKT 2019
Wed Aug 21 10:00:00 HKT 2019
Wed Aug 21 16:00:00 HKT 2019
Thu Aug 22 10:00:00 HKT 2019
Thu Aug 22 16:00:00 HKT 2019
Fri Aug 23 10:00:00 HKT 2019
Fri Aug 23 16:00:00 HKT 2019
Sat Aug 24 10:00:00 HKT 2019
Sat Aug 24 16:00:00 HKT 2019
Sun Aug 25 10:00:00 HKT 2019
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57565281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档