quartz中的CronTrigger是仿照Unix的Crontab的定时任务,进行任务启动的。
CronTrigger配置格式:
序号: 说明 是否为必填 允许填写值 允许的通配符
1. 秒 是 0-59 , - * /
2. 分 是 0-59 , - * /
3. 时 是 0-23 , - * /
4. 日 是 1-31 , - * ? / L W
5. 月 是 1-12 or JAN-DEC , - * /
6. 周 是 1-7 or SUN-SAT , - * ? / L W
7. 年 否 empty or 1970-2099 , -* /
通配符的说明:
* 表示所有值。
? 表示不定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为 0 0 0 10 * ?
- 表示区间 。例如在小时上设置"10-12",表示10,11,12点都会触发
, 表示指定多个值,例如在周字段设置 "MON,WED,FRI",表示周一,周三和周五触发。
/ 表示用于递增触发。如在秒上面设置"5/15",表示从5秒开始,每增15秒触发(5,20,35,50)
L 表示最后的意思。在日字段设置上,表示当月的最后一天,在周字段上表示星期六,相当于7或SAT。如果在L前加上数字,
则表示该数据的最后一个。例如在周字段上设置“6L”这样的格式,则表示“本月最后一个星期五”
W 表示离指定日期最近的那个工作日(周一至周五),例如在日字段上设置“15W”,表示离每月15号最近的那个工作日触发。如果15号是周六,
则找最近的周五(14号触发),如果15号是周末,则找最近的下周一(16号)触发。如果15号正好是工作日,则当天触发。
注意:如果指定的格式为“1W”,则表示每月的1号往后的最近工作日触发。如果1号是周六,则将在3号(下周一)触发。
# 序号 表示每月的第几个周几,例如在周字段上设置“6#3”表示在每月的第三个周六。注意如果指定“6#5”正好第五周没有周六,则不会触发该配置。
提示:
“L”和“W”可以组合使用。如果在日字段上设置“LW”,则表示在本月的最后一个工作日触发(一般指发工资);
周字段的设置,若使用英文字母是不缺分大小写的。
CronTrigger样例使用:
public class QuartzTest implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("任务执行开始");
}
public void task() throws ParseException{
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
JobDetail jobDetail = new JobDetail("jobdetail1","defaultgroup",this.getClass());
CronTigger cronTrigger = new CronTrigger("cron1","defaultgroup");
CronExpression cexp = new CronExpression("0/1 * * * * ?");
cronTrigger.setCronExpression(cexp);
scheduler .scheduleJob(jobDetail,simpleTrigger);
scheduler .start();
}
}
本文详细介绍了Quartz中CronTrigger的配置格式及其通配符的含义,包括秒、分、时、日、月、周和年的具体设置方法,并通过示例展示了如何使用CronTrigger实现任务调度。
634

被折叠的 条评论
为什么被折叠?



