1.5-Quartz大哥(Trigger)
2017-12-11 本文已影响0人
王子也寂寞
Trigger是什么?
Quartz中的触发器用来告诉调度程序作业什么时候触发.即Trigger对象是用来触发执行Job的.
一.触发器通用属性
- JobKey
表示job实例的标识,触发器被触发时,该指定的job实例会执行. - StartTime
表示触发器首次被触发的时间.它的值得类型是Java.util.Date. - EndTime
指定触发器的不再被触发的时间.它的类型是Java.util.Date.
二.Trigger通用属性的简单使用
Job类
public void execute(JobExecutionContext context) throws JobExecutionException {
//打印当前的执行之间,格式为2017-01-01 00:00:00
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time is : " + sf.format(date));
//编写具体的业务逻辑
Trigger currentTrigger = context.getTrigger();
System.out.println(currentTrigger.getStartTime() + "-----" + currentTrigger.getEndTime());
JobKey jobKey = currentTrigger.getJobKey();
System.out.println(jobKey.getName() + "####" + jobKey.getGroup());
}
scheduler类
public static void main(String[] args) {
//创建一个JobDetail实例,将该实例与HelloJob Class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "JobGroup1")
.build();
//创建一个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();
//创建scheduler实例,有很多工厂,这个是最简单的
SchedulerFactory sfact = new StdSchedulerFactory();
try {
Scheduler scheduler = sfact.getScheduler();
scheduler.start();
//打印当前的执行时间
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time is:" + sf.format(date));
scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
}