一、什么是 Quartz Cron 表达式
Quartz Cron 表达式是一种由 cron 表达式演变而来的一种用来表示定时任务执行周期的方式。它可以精确到秒级别的时间点,支持精确地控制定时任务的执行时间。
二、Quartz Cron 表达式的格式
Quartz Cron 表达式由六个字段组成,它们分别是:秒、分、小时、日、月、周。每个字段都有一些特定的值,用于表示任务执行的时间。
Quartz Cron 表达式的格式如下:
```
<秒> <分> <小时> <日> <月> <周>
```
其中:
- 秒:取值范围为 0~59。
- 分:取值范围为 0~59。
- 小时:取值范围为 0~23。
- 日:取值范围为 1~31。
- 月:取值范围为 1~12 或 JAN~DEC。
- 周:取值范围为 0~7 或 SUN~SAT。其中,0 和 7 都表示周日。
以上每个字段都可以使用以下方式来表示:
1. 具体的值
使用具体的数字或字符串来表示某个时间点。例如:
- 秒:2
- 分:30
- 小时:8
- 日:15
- 月:6
- 周:3
以上表示的含义分别为:2 秒、30 分、8 点、15 号、6 月、周三。
2. 区间
使用`-`来表示一个区间,例如:
- 日:10-20
表示从 10 号到 20 号(包括 10 和 20)。
3. 列表
使用`,`来表示一个列表,例如:
- 日:1,15
表示 1 号和 15 号。
4. 星号
使用 `*` 表示所有可能的值。例如:
- 分:*
表示每分钟都执行。
5. 斜杠
使用 `/` 表示增量,例如:
- 每隔 5 秒执行:`*/5 * * * * ?`
表示每隔 5 秒都要执行一次任务。
三、Quartz Cron 表达式的使用方法
1. 创建 CronTrigger 对象
首先,我们需要创建一个 CronTrigger 对象,来设置任务的执行时间。 创建 CronTrigger 对象的方法如下:
```java
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
```
其中,`cronExpression` 就是我们要创建的 Cron 表达式。
2. 解析 Cron 表达式
在创建 CronTrigger 对象之前,我们需要先解析 Cron 表达式。Quartz 提供了 CronExpression 类来解析 Cron 表达式。解析 Cron 表达式的方法如下:
```java
CronExpression expression = new CronExpression(cronExpression);
```
如果 Cron 表达式格式不正确,解析器就会抛出 ParseException 异常。
3. 验证 Cron 表达式
在创建 CronTrigger 对象之前,建议先对 Cron 表达式进行验证,以确保 Cron 表达式能正确地表示任务的执行时间。验证 Cron 表达式的方法如下:
```java
CronExpression.validateExpression(cronExpression);
```
如果 Cron 表达式格式不正确,验证器就会抛出 CronException 异常。
四、Quartz Cron 表达式的案例
1. 每隔一分钟执行一次
Cron 表达式:`0 */1 * * * ?`
解析如下:
- 秒:0
- 分:每分钟的第 0 秒
- 小时:任意
- 日:任意
- 月:任意
- 周:任意
该Cron 表达式表示每隔一分钟执行一次。
2. 每天的 11 点 30 分执行
Cron 表达式:`0 30 11 * * ?`
解析如下:
- 秒:0
- 分:30
- 小时:11
- 日:任意
- 月:任意
- 周:任意
该 Cron 表达式表示每天的 11 点 30 分执行。
3. 每年的 3 月份的第一个星期五 13 点执行
Cron 表达式:`0 0 13 ? 3 FRI#1`
解析如下:
- 秒:0
- 分:0
- 小时:13
- 日:任意
- 月:3
- 周:第一个星期五
该 Cron 表达式表示每年的 3 月份的第一个星期五 13 点执行。
5. 每个月最后一天的 0 点执行
Cron 表达式:`0 0 0 L * ?`
解析如下:
- 秒:0
- 分:0
- 小时:0
- 日:每个月的最后一天
- 月:任意
- 周:任意
该 Cron 表达式表示每个月最后一天的 0 点执行。
以上是一些常见的 Cron 表达式案例,读者可以根据自己的业务需求,来灵活地制定任务的执行时间。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复