SimpleTrigger
可以满足的调度需求是:在具体的时间点执行一次,或者在具体的时间点执行,并且以指定的间隔重复执行若干次。
指定从某一个时间开始,以一定的时间间隔(单位是毫秒、秒、分、时)执行的任务。
它的属性:
1、repeatInterval 重复间隔
2、repeatCount 重复次数。实际执行次数是 repeatCount+1。因为在startTime的时候一定会执行一次。
重复次数,可以是0、正整数,以及常量SimpleTrigger.REPEAT_INDEFINITELY。重复的间隔,必须是0,或者long型的正数,表示毫秒。注意,如果重复间隔为0,trigger将会以重复次数并发执行(或者以scheduler可以处理的近似并发数)。
1、当前时间15秒后运行,每10秒运行一次,共运行5次
//当前时间15秒后
Date startTime=DateBuilder.nextGivenSecondDate(null,15);
SimpleTrigger trigger1=newTrigger()
.withIdentity("trigger1","group1")
.startAt(startTime)
.withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(5))
.build();
2、从指定时间开始,每10秒钟执行一次,一直执行
SimpleTrigger trigger1=newTrigger()
.withIdentity("trigger1","group1")
.startAt(startTime)
//加入schedule立即执行
// .startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
CalendarIntervalTrigger
类似于SimpleTrigger,指定从某一个时间开始,以一定的时间间隔执行的任务。支持的间隔单位有秒,分钟,小时,天,月,年,星期。没法指定重复的次数。
它的属性:
1、interval 执行间隔
2、intervalUnit 执行间隔的单位(秒,分钟,小时,天,月,年,星期)
//隔一年执行
CalendarIntervalTrigger ctrigger=newTrigger()
.withIdentity("trigger1","group1")
.startNow()
.withSchedule(CalendarIntervalScheduleBuilder
.calendarIntervalSchedule()
.withIntervalInYears(1))
.build();
DailyTimeIntervalTrigger
指定每天的某个时间段内,以一定的时间间隔执行任务。可以指定秒、分、时。可以指定重复次数。
DailyTimeIntervalTrigger dtrigger=newTrigger()
.withIdentity("trigger1","group1")
.startNow()
.withSchedule(DailyTimeIntervalScheduleBuilder
.dailyTimeIntervalSchedule()
.withIntervalInHours(1)
.withRepeatCount(10))
.build();
DateBuilder.nextGivenMinuteDate(Data,int),按间隔输出时间,结果会比较特殊:
//格式化
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
//Date date=new Date();
//输入的时间
String tm="11:17:41";
try{
Date startTime=DateBuilder.nextGivenMinuteDate(sdf.parse(tm),30);
System.out.println("时间:"+sdf.format(startTime));
}catch (Exception e){
e.printStackTrace();
}
//结果:
时间:11:30:00
这样结果的规律是:将输入的结果初始值换算为00,将时间按照指定的间隔等分,然后加上指定的时间间隔(整数倍);对结果值进行判断,返回离初始时间最近的,但是比初始时间大的结果时间(在时间间隔范围内)
CronTrigger
CronTrigger cronTrigger=newTrigger()
.withIdentity("trigger1","group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 33 20 * * ?"))
.build();
参考文章:
http://blog.youkuaiyun.com/guolong1983811/article/details/51501346
https://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/
http://www.cnblogs.com/yqw1994/p/6599562.html
http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html