程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> quartz使用(一),quartz使用(

quartz使用(一),quartz使用(

編輯:JAVA綜合教程

quartz使用(一),quartz使用(


在項目中經常會碰到定時任務,quartz是一款非常優秀的開源框架, 提供了定時任務的支持,還支持任務的持久化,並且提供了對數據庫的支持。下面首先對quartz做一個簡單介紹,並附上一個小例子。

1、下面是quartz的官網:

http://www.quartz-scheduler.org//,打開網址我們可以看到quartz最新的版本是2.2.3這裡我也以此版本作為例子的環境。quartz從2.0版本其做了很大的改變,具體的變化可以自己查閱相關資料,在此不贅述。

2、我這裡下載的是quartz-2.2.3-distribution.tar.gz,用解壓縮工具解壓出來得到如下圖的文件目錄結構,

docs:quartz的文檔信息,包含了和數據庫相關的建表sql;

examples:例子;

javadoc:使用java的doc,可以使用jd2chm工具轉化為chm格式的文檔;

lib:quartz的jar包,包含了使用quartz的所有包(依賴包和quartz的jar包);

licenses:許可文件;

src:quartz的源碼;

3、從lib包裡我們可以看到quartz的日志系統使用的是slf4j,但是其真正的日志系統是log4j,具體的日志框架描述,可以參看我別的文章。

4、quartz即可以用在java工程中,也可以用在javaweb項目中,這裡以javaweb項目為環境做例子。

5、把quartz文件夾下的lib文件夾裡的所有jar包放到項目的lib目錄下。

6、經過上面的步驟就把quartz引入到了工程中。

下面是具體的例子的說明及代碼:

一、首先,要創建一個任務,quartz規定任務必須實現org.quarta.Job接口,此接口就一個方法execute,這個方法就是任務執行的時候允許的方法,具體的業務實現在這個方法裡,我這裡只進行了簡單的打印,

 1 package com.cn.myScheduler;
 2 
 3 import org.quartz.Job;
 4 import org.quartz.JobExecutionContext;
 5 import org.quartz.JobExecutionException;
 6 public class MyJob implements Job {
 7     @Override
 8     public void execute(JobExecutionContext arg0) throws JobExecutionException {
 9         // TODO Auto-generated method stub
10         System.out.println("this is my first scheduler!");
11     }
12 
13 }

二、創建完任務之後,我們還要創建一個包含任務信息的jobDetail,一個管理任務執行的促發器trigger,最後就是調度任務,

 1 package com.cn.myScheduler;
 2 
 3 import org.quartz.JobBuilder;
 4 import org.quartz.JobDetail;
 5 import org.quartz.Scheduler;
 6 import org.quartz.SchedulerException;
 7 import org.quartz.SchedulerFactory;
 8 import org.quartz.SimpleScheduleBuilder;
 9 import org.quartz.Trigger;
10 import org.quartz.TriggerBuilder;
11 import org.quartz.impl.StdSchedulerFactory;
12 public class TestMyJob {
13     public static void main(String[] args) {
14         // TODO Auto-generated method stub
15         try{
16         //1、獲得一個scheduler
17         SchedulerFactory sf=new StdSchedulerFactory();
18         Scheduler scheduler =sf.getScheduler();
19         //2、獲得一個jobDetail
20         JobDetail job = JobBuilder.newJob(MyJob.class)
21                  .withIdentity("myJob")
22                  .build();
23 
24         //3、獲得一個trigger
25          Trigger trigger = TriggerBuilder.newTrigger()
26                   .withIdentity("trigger1", "group1")
27                   .startNow()
28                   .withSchedule(SimpleScheduleBuilder.simpleSchedule()
29                           .withIntervalInSeconds(40)
30                           .withRepeatCount(10))
31                          .build();
32         //4、把任務和觸發器放到scheduler中
33         scheduler.scheduleJob(job, trigger);
34         //5、開始任務調度
35         scheduler.start();
36         }
37         catch(SchedulerException e){
38             e.printStackTrace();
39         }
40     }
41 
42 }

注釋1:創建一個scheduler,scheduler負責所有任務的調度。

注釋2:創建一個包含任務信息的jobDetail,指定任務的實現類為MyJob.class,使用withIdentity方法指定任務名稱,還可以用第二個參數指定任務的組名

注釋3:創建一個任務促發器,指定了促發器的名稱“trigger1”和促發器的組名“group1”;設置了促發的時間為當前促發,且每隔40S執行一次,一共執行10次

注釋4:把jobDetail和trigger放到scheduler中

注釋5:啟動scheduler

運行程序可以看到程序的輸出。

以上就是一個簡單的quartz定時任務。

有關quartz的內容會持續更新!

謝謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved