quartz API 接口部分
Scheduler : 与调度程序进行交互的主要API,包括启动,暂停,显示
Job :调度程序执行的组件实现的接口(每次调用都会启用一个线程)
JobDetail : 用于定义作业的实例
Trigger : 定义执行给定作业的计划的组件,包括执行周期、时间、方式
JobBuilder : 用于定义/构建JobDetail实例,它定义了作业的实例
TriggerBuilder : 用于定义/构建触发器实例
第一个例子
public class HelloJob implements Job{
private static Logger log = org.slf4j.LoggerFactory.getLogger(HelloJob.class);
public void execute(JobExecutionContext arg0) throws JobExecutionException {
log.info("hello World" + new Date());
}
}
public class SimpleDemo {
public void run() throws SchedulerException{
Logger log = LoggerFactory.getLogger(SimpleDemo.class);
// 初始化调度
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
// 反射加载实现Job接口的HelloJob类
JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
// 运行时间 每分钟运行一次
Date runTime = DateBuilder.evenMinuteDateBefore(new Date());
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
sched.scheduleJob(job, trigger);
// 调度开始
sched.start();
// 主线程关闭65s, 此期间触发不了
try {
Thread.sleep(65L*1000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 调度关闭
sched.shutdown();
}
public static void main(String[] args) throws SchedulerException {
SimpleDemo demo = new SimpleDemo();
demo.run();
}
}
格式: [秒] [分] [小时] [日] [月] [周] [年]
0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 每天10点15分触发
0 15 10 * * ? * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天下午的 2点到2点59分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发
0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
0 15 10 15 * ? 每月15号上午10点15分触发
0 15 10 L * ? 每月最后一天的10点15分触发
0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)