我想知道这个表达的含义
0 * * * * *
Run Code Online (Sandbox Code Playgroud)
我认为这意味着调度程序预计每秒运行一次。有人可以向我证实这一点吗?
@Scheduled(cron = "0 * * * * *")
Run Code Online (Sandbox Code Playgroud)
更准确地说,您可以使用CronSequenceGeneratorcron 表达式来验证执行时间。Spring内部使用该对象来计算cron表达式的下一次触发时间。
例如,以下函数将简单地打印出接下来的 10 个触发时间。
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);
}
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我输入:
printNextTriggerTime("0 * * * * *", LocalDateTime.of(2019, 8, 20, 15, 30, 0));
Run Code Online (Sandbox Code Playgroud)
它将输出:
Tue Aug 20 15:31:00 HKT 2019
Tue Aug 20 15:32:00 HKT 2019
Tue Aug 20 15:33:00 HKT 2019
Tue Aug 20 15:34:00 HKT 2019
Tue Aug 20 15:35:00 HKT 2019
Tue Aug 20 15:36:00 HKT 2019
Tue Aug 20 15:37:00 HKT 2019
Tue Aug 20 15:38:00 HKT 2019
Tue Aug 20 15:39:00 HKT 2019
Tue Aug 20 15:40:00 HKT 2019
Run Code Online (Sandbox Code Playgroud)
这意味着0 * * * * *将每分钟运行一次,但不会每秒运行一次。
| 归档时间: |
|
| 查看次数: |
19403 次 |
| 最近记录: |