作用
cron表达式被用来配置CronTrigger实例,用法如下:
// 建立一个触发器,每隔两分钟,每天上午8点至下午5点之间:
trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(cronSchedule("0 0/2 8-17 * * ?"))
.forJob("myJob", "group1")
.build();
表达式内各字段解析
cron表达式是字符串类型,用空格隔开,可以拆分为六个或七个子串,分别表示:
秒 时 分 日 月 周 年
cron表达式中可以出现特殊字符,含义如下:
“*”:指定所有的值。比如,Minutes 设置为 *,表示每分钟
“,”:表示列出枚举值值。例如:在Minutes域使用“5,20”,则意味着在5和20分每分钟触发一次。
“-”:表示范围。例如在Minutes域使用“5-20”,表示从5分到20分钟每分钟触发一次 。
“/”:表示为“间隔”。使用该符号,可以确定几个有规律的时间点,job在这些时间点触发,这些时间点是同级的。如“0/50”确定两个时间点“0、50”,job会在这两个点执行,时间点先后无必然关系,假如程序在(0,50)间启动,那就先在时间点50执行job。还要符合一定的规则,比如在描述秒时,使用“0/70”,就会抛异常。
递增检测规则如下:
package org.quartz;
// class CronExpression
private void checkIncrementRange(int incr, int type, int idxPos) throws ParseException {
if (incr > 59 && (type == SECOND