【Quartz】CronTrigger

介绍

  任务调度有两种方式:SimpleTrigger和CronTrigger。比较常用的是CronTrigger,它更灵活。
  CronTrigger可以设置一个重复的任务调度计划,如:每周五12:00执行一次任务。

示例

//使用simpleTrigger规则,每下一分钟执行一次
Trigger trigger = 
     newTrigger().withIdentity("trigger1","group1").startAt(runTime).build();

//使用cornTrigger规则,每20秒执行一次
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1")
                      .withSchedule(cronSchedule("0/20 * * * * ?")).build();

Cron-Expression

  Cron-Expression用于配置CronTrigger的实例,是由七个子表达式按顺序排列组成的字符串。各个子表达式用空格隔开,分别描述了计划的各个细节。七个子表达式都有一组可以指定的有效值,如下表所示:

表达式 有效值
0 ~ 59
分钟 0 ~ 59
小时 0 ~ 23
1 ~ 31
0 ~ 11 或者 JAN ~ DEC (注意给定月份有多少天)
星期 1 ~ 7 或者 SUN ~ SAT (1代表星期日)
年(可选字段) 1970 ~ 2099

  一个完整的Cron-Expression示例:"0 0 12 ? * FRI",意思是每个周五12:00:00。

特殊字符

  1. * 表示通配符。例如:在月表达式写 * 表示每月。
  2. / 表示指定增量值。例如:在秒表达式写0/20表示第0秒触发一次,第20秒再触发一次,第40秒再触发一次。在分钟表达式写3/20表示第3分钟触发一次,第23分钟再触发一次,第46分钟再触发一次。
  3. ? 表示无特定值。只能用在日表达式和星期表达式中。例如:想在每月20日触发调度,不管20日是星期几,则只能使用写法:0 0 0 20 * ?,最后的星期表达式只能用,而不能使用*,因为*表示不管星期几都会触发。
  4. - 表示范围。例如在分钟表达式写5-20,表示从5分钟到20分钟,每分钟触发一次。
  5. # 用于指定每个月的第几个星期几。只能出现在月表达式中。例如:4#2表示某月的第二个星期三。
  6. W 表示有效工作日(周一到周五),只能出现在日表达式,系统将在离指定日期最近的工作日触发。例如:5W,如果5日是星期六,那么将在最近的工作日星期五触发。另外,W的最近寻找不会跨过月份。
  7. L 表示最后。只能出现在日表达式和星期表达式。例如:5L出现在星期表达式,表示一个月的最后一个星期四。5L出现在日表达式,表示一个月的倒数第5天。
  8. , 表示多个。例如,在星期表达式中使用WED,FRI,表示一个月的每周三和每周五触发。

参考资料:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/tutorial-lesson-06.html
参考资料:https://www.cnblogs.com/junrong624/p/4239517.html

猜你喜欢

转载自blog.csdn.net/gnd15732625435/article/details/80715377
今日推荐