一.SimpleTrigger
- 作用:
在某一指定时间段内执行一次作业任务,或者在指定的时间间隔内多次执行作业任务.
默认情况下就是SimpleTrigger.
//创建一个Trigger实例,用来触发Job来执行的
//获取距离当前时间3秒后的时间
Date startDate = new Date();
startDate.setTime(startDate.getTime() + 3000);
//获取距离当前6s后的时间
Date endDate = new Date();
endDate.setTime(endDate.getTime() + 6000);
//立即执行,并且每隔两秒执行一次
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "TriggerGroup1")
.startAt(startDate)
.endAt(endDate)
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever())
.build();
- 注意点:
- withRepeatCount这个参数可以是0,正整数或是SimpleTrigger.REPEAT_INDEFINITELY常量值.
- 重复执行间隔必须为0或者长整数.
3.一旦指定了endTime参数,那么会覆盖重复次数参数的效果.
二.CronTrigger
- 作用:
基于日历的作业调度器,而不是像SimpleTrigger那样精确指定时间间隔,比SimpleTrigger更常用.
1.Cron表达式
- 用于配置CronTrigger实例.是由7个子表达式组成的字符串,描述了时间表的详细信息.格式:秒 分 小时 日 月 周 年,注意[]和[]之间有空格.
- Cron表达式特殊字符意义对应表
字段 | 是否必填 | 允许值 | 允许特殊字符 |
---|---|---|---|
秒 | 是 | 0~59 | , - * / |
分 | 是 | 0~59 | , - * / |
小时 | 是 | 0~23 | , - * / |
日 | 是 | 1~31 | , - * ? / L W C |
月 | 是 | 1~12 或者 JAN-DEC | , - * / |
周 | 是 | 1~7 或者 SUN-SAT | , - * ? / L C # |
年 | 否 | empty,1970~2099 | , - * / |
- 符号的意思
,表示或的关系;
-表示至,between的意思.
*表示每的意思,per的意思.
/表示每隔多久触发的意思.
?表示不用管的意思.
#表示第几周
L表示最后第意思,last;注意星期是周日到周六,最后一天是周六,7是星期六.
W表示离指定日期最近的那个工作日.LW可以一起使用. - 举例
每天的14点整至15点59分55秒,以及18点整至18点59分55秒,每隔5s触发一次.
0/5 * 14,18 * * ?
2.提示
Cron表达式生成器,可以直接百度