1.Trigger通用属性
Trigger的触发器通用属性:JobKey——job实例的标识,触发器被触发时,该指定的job实例会执行;StartTime——表示触发器的时间表首次被触发的时间,它的值的类型是Java.util.Date;EndTime——指定触发器不再被触发的时间,它的值的类型是Java.util.Date;Job示例代码如下:
package com.luna.timer.quarts;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.Trigger;
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//打印当前执行时间
Date startTime = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("任务执行时间为:"+sf.format(startTime));
Trigger currentTrigger = context.getTrigger();
System.out.println("Start Time is:"+sf.format(currentTrigger.getStartTime()));
System.out.println("End Time is:"+sf.format(currentTrigger.getEndTime()));
JobKey jobKey = currentTrigger.getJobKey();
System.out.println("JobKey info---"+"jobName:"+jobKey.getName()+"jobGroup:"+jobKey.getGroup());
}
}
Trigger示例代码如下:
package com.luna.timer.quarts;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
// 创建一个JobDetail实例与HelloJob类绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").build();
//打印当前时间
Date startTime = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("打印当前时间:"+sf.format(startTime));
//获取当前时间3秒后的时间
startTime.setTime(startTime.getTime()+3000);
//获取当前时间6秒后的时间
Date endDate = new Date();
endDate.setTime(endDate.getTime()+6000);
// 创建一个Trigger实例,定义该Job立即执行,且每隔两秒钟执行一次直到永远
Trigger trigger = TriggerBuilder.newTrigger().
withIdentity("mtTrigger", "group1").
startAt(startTime).endAt(endDate).
withSchedule(SimpleScheduleBuilder.simpleSchedule().
withIntervalInSeconds(2).repeatForever()).build();
//创建scheduler实例
SchedulerFactory sFactory = new StdSchedulerFactory();
Scheduler scheduler = sFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail,trigger);
}
}
2.浅谈SimpleTrigger
SimpleTrigger:在一个指定时间段内执行一次作业任务,或者是在指定的时间间隔内多次执行作业任务。创建定时任务:距离当前时间4秒之后执行且仅执行一次,代码如下:
package com.luna.timer.quarts;
import java.text.SimpleDateFormat;
import j