1. 程式人生 > >Quartz初識以及簡單運用

Quartz初識以及簡單運用

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初識以及簡單運用