1、quartz的简单使用
1、首先引入一个调度器schedule
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
2、计算下次的运行时间
Date runTime = evenMinuteDate(new Date());
3、定义一个与job相关的类(该类需实现Job接口)
job1为任务的名字,group为任务的组
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
4、创建一个触发器
Trigger trigger = newTrigger().withIdentity("trigger1","group1").startAt(runTime).build();
5、告诉调度器使用触发器
sched.scheduleJob(job, trigger);
6、启动调度程序
sched.start();
可选,线程休眠65秒
Thread.sleep(65L * 1000L);
2、简单触发器的使用
获取下一次的时间
Date startTime = DateBuilder.nextGivenSecondDate(null, 15);
简单触发器
SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1").startAt(startTime).build();
job3将运行11次(运行一次,再重复10次,每次相隔10秒)
job = newJob(SimpleJob.class).withIdentity("job3", "group1").build();
trigger = newTrigger().withIdentity("trigger3", "group1").startAt(startTime)
.withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(10)).build();
同一个任务可以被多个触发器调度
job5运行一次,在五分钟之后运行
trigger = (SimpleTrigger) newTrigger().withIdentity("trigger5", "group1")
.startAt(futureDate(5, IntervalUnit.MINUTE)).build();
job6无限制运行,每隔40秒运行一次
trigger = newTrigger().withIdentity("trigger6", "group1").startAt(startTime)
.withSchedule(simpleSchedule().withIntervalInSeconds(40).repeatForever()).build();
job7重复20次,每5分钟重复一次
trigger = newTrigger().withIdentity("trigger7", "group1").startAt(startTime)
.withSchedule(simpleSchedule().withIntervalInMinutes(5).withRepeatCount(20)).build();
添加任务到调度器
sched.addJob(job, true);
手动触发任务
sched.triggerJob(jobKey("job8", "group1"));
重新调度任务
trigger =