package testQ;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.TriggerKey.triggerKey;
import java.util.Calendar;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
/**
*
* @author 请叫我活雷锋
* 鄙人也是刚开始学习 有些东西讲解不到位请见谅,各位可以参考别的资料
* http://blog.csdn.net/lnara/article/details/8632324
* 这个资料很棒 很好 只是没有讲到怎么去动态的去修改他的执行时间
*/
public class CronTriggerExample {
public static void main(String[] args) throws Exception {
run();
}
public static void run() throws Exception {
// 获得 Scheduler 对象
Scheduler scheduler = GetScheduler.getInstance();
//获得一个开始时间(年,月,日,时,分,秒)
Calendar calendar = Calendar.getInstance();
calendar.set(2014, 7, 4, 17, 15, 20);
// 定义一个 job 对象并绑定我们写的 SimpleJob 类
// 真正执行的任务并不是Job接口的实例,而是用反射的方式实例化的一个JobDetail实例
JobDetail job = newJob(SimpleJob.class).withIdentity( "job" , "group").build();
// 定义一个触发器,startAt方法定义了任务应当开始的时间 .即你定义的时间开始执行
SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("newTrigger", "group1").startAt(calendar.getTime()).build();
// 将任务和Trigger放入scheduler
Date date = scheduler.scheduleJob(job, trigger);
// 启动
scheduler.start();
//===========================修改触发器的触发时间
//获得触发器Trigger对象
Trigger oldTrigger = scheduler.getTrigger(triggerKey("newTrigger", "group1"));
TriggerBuilder tb = oldTrigger.getTriggerBuilder();
//获得一个修改后的时间(年,月,日,时,分,秒)
Calendar calendar1 = Calendar.getInstance();
calendar1.set(2014, 7, 4, 17, 15, 30);
// 定义一个触发器,startAt方法定义了任务应当开始的.既为你修改后的时间、这里修改后上面的2014-7-4 17:15:20的触发器将不执行
SimpleTrigger newTrigger = (SimpleTrigger) tb.startAt(calendar1.getTime()).build();
// 将Trigger放入scheduler;这样在2014-7-4 17:15:30还会去执行你的上面定义的job方法
scheduler.rescheduleJob(oldTrigger.getKey(), newTrigger);
}
}
- 1
- 2
前往页