1.定义Job
package cn.itcast.quartz.example;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 要执行的JOB任务
*
* @author xiajie
* @version $Id: HelloJob.java, v 0.1 2017年9月29日 上午11:09:42 xiajie Exp $
*/
public class HelloJob implements Job {
private static Logger _log = LoggerFactory.getLogger(HelloJob.class);
public HelloJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("Hello World! - " + new Date());
// Say Hello to the World and display the date/time
_log.info("Hello World! - " + new Date());
}
}
2.表达式触发器使用
package cn.itcast.quartz.example;
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
public class SimpleCronExample {
public void run() throws Exception {
// 定义调度器
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
// 定义job
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
// 定义触发器,每5秒执行一次
/**
* withSchedule(cronSchedule("0/5 * * * * ?")) 定义触发器
*/
Trigger trigger = newTrigger().withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0/5 * * * * ?")).build();
// 将job注册到调度器
sched.scheduleJob(job, trigger);
// 启动调度器
sched.start();
try {
Thread.sleep(60L * 1000L);
} catch (Exception e) {
}
// 关闭调度器
sched.shutdown(true);
}
public static void main(String[] args) throws Exception {
SimpleCronExample example = new SimpleCronExample();
example.run();
}
}
package cn.itcast.quartz.example;
import static org.quartz.DateBuilder.evenMinuteDate;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
public class SimpleExample {
public void run() throws Exception {
Logger log = LoggerFactory.getLogger(SimpleExample.class);
// 定义调度器
/**
* 工厂模式,获取调度器
*/
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
// 获取当前时间的下一分钟
Date runTime = evenMinuteDate(new Date());
// 定义job
// 在quartz中,有组的概念,组+job名称 唯一的
/**
* Job和JobDetail是成对出现的
*/
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
// 定义触发器,在下一分钟启动
/**
* withIdentity("trigger1", "group1")
* 触发器的名称,触发器属于哪个组
* startAt 什么时候开始执行
*/
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
// 将job注册到调度器
sched.scheduleJob(job, trigger);
log.info(job.getKey() + " will run at: " + runTime);
// 启动调度器
sched.start();
// 等待65秒
try {
// wait 65 seconds to show job
Thread.sleep(65L * 1000L);
// executing...
} catch (Exception e) {
//
}
// 关闭调度器
sched.shutdown(true);
}
public static void main(String[] args) throws Exception {
SimpleExample example = new SimpleExample();
example.run();
}
}