Quartz初識以及簡單運用
阿新 • • 發佈:2018-04-18
www test 開發人員 detail 程序 trac 初識 觸發 AR
1、初識Quartz
1.1、概述
- Quartz是一個完全由Java編寫的一個開源的任務調度框架,說的簡單點就是開發人員可以通過Quartz根據時間間隔調度任務,例如:
- 每隔一小時命令程序執行一個任務
- 每個月命令程序執行一個任務
- 指定某月末日命令程序執行一個任務
- ……
- 每隔一小時命令程序執行一個任務
- Quartz下載地址:http://www.quartz-scheduler.org/downloads/
1.2、Quartz API
1.2.1、Scheduler——與scheduler交互的主要API;
Scheduler的生命周期從SchedulerFactory創建它時開始,到Scheduler調用showdown() 方法結束。Scheduler只有在調度start()方法後才會真正的觸發trigger(執行job)。Scheduler被創建後可以增加、刪除、和列舉Job和Trigger,以及執行其它與調度相關的操作。
1.2.2、Job——由調度程序執行的任務需要實現的接口
1.2.3、JobDetail——定義Job的實例
1.2.4、Trigger——觸發Job的執行
1.2.5、JobBuilder——定義創建JobDetail實例的接口
1.2.6、TriggerBuilder——定義創建Trigger實例的接口
2、Hello Quartz 簡單運用
2.1、首先實現一個簡單的小demo《Hello Quartz!》,具體需求:每隔5秒通過控制臺輸出一句“hello quartz!”;
2.2、代碼
1 package com.xxw.test; 2 3 import org.quartz.Job; 4 import org.quartz.JobExecutionContext; 5 import org.quartz.JobExecutionException; 6 7 public class MyJob implements Job{ 8 9 @Override 10 public void execute(JobExecutionContext arg0) throws JobExecutionException { 11 System.out.println("hello quartz!");12 } 13 14 }
1 package com.xxw.test; 2 3 import static org.quartz.JobBuilder.newJob; 4 import static org.quartz.SimpleScheduleBuilder.simpleSchedule; 5 import static org.quartz.TriggerBuilder.newTrigger; 6 7 import org.quartz.JobDetail; 8 import org.quartz.Scheduler; 9 import org.quartz.Trigger; 10 import org.quartz.impl.StdSchedulerFactory; 11 12 public class HellowQuartz { 13 14 public static void main(String[] args) { 15 try { 16 // 定義JobDetail 17 JobDetail job = newJob(MyJob.class) // 定義Job類為MyJob類,這個類是任務邏輯類 18 .withIdentity("job1", "group1") // 定義name/group 19 .build(); 20 21 // 定義一個Trigger 22 Trigger trigger = newTrigger() 23 .withIdentity("trigger1", "group1") // 定義name/group 24 .startNow() // 一旦加入scheduler,立刻生效 25 .withSchedule( 26 simpleSchedule() // 使用simpleSchedule 27 .withIntervalInSeconds(5) // 每隔5秒執行一次 28 .repeatForever()) // 一直執行 29 .build(); 30 31 // 實例 Schedule 調度器 32 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 33 // 添加調度 34 scheduler.scheduleJob(job, trigger); 35 // 啟動 36 scheduler.start(); 37 38 } catch (Exception e) { 39 e.printStackTrace(); 40 } 41 } 42 }
2.3、結果
Quartz初識以及簡單運用