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分觸發(光棍節)