標籤:
原文地址:http://liuzidong.iteye.com/blog/1118992環境:XP+Myeclipse6.5+JDK1.6
quartz官網:http://www.quartz-scheduler.org/
參考資料
1 Quartz任務調度快速入門
http://www.blogjava.net/baoyaer/articles/155645.html
2 Quartz
http://ttaale.iteye.com/blog/630202
http://java-lyvee.iteye.com/blog/817110
3 Quartz Job Scheduling Framework
http://hi.baidu.com/recoder/blog/item/ec7642f1db2b68a7a40f52f3.html
4 Quartz學習
http://blog.csdn.net/bubei/article/details/2108778
5 Quartz學習資料連結
http://topmanopensource.iteye.com/blog/search?query=quartz
特別說明:如無特別說明,所有有關quartz樣本基於官方樣本
一 Quarta介紹
1 Quartz是什麼
Quartz就是一個純 Java 實現的作業調度工具,相當於資料庫中的 Job、Windows 的計劃任務、Unix/Linux 下的 Cron,但 Quartz 可以把排程式控制制的更精細.
2 Quartz 架構的發展曆程
Quartz項目是由James House創立的,在1998年就有該架構最初的構思,包括作業隊列的概念,使用線程池來處理作業,在2001年春天在SourceForge 上創立了該項目.
Quartz 的目錄結構和內容
DocsQuartz 架構的JavaDoc Api 說明文檔
Examples多方面使用 Quartz 的例子
LibQuartz 使用到的第三方包
quartz-jboss提供了特定於 JBoss 特性的原始碼
quartz-oracle提供了特定於 Oracle 特性的原始碼
quartz-weblogic提供了特定於 WebLogic 特性的原始碼
二 Quartz的應用情境
情境 #1: 寄件提醒和警示
情境 #2: 執行檔案傳輸操作
情境 #3: 建立銷售報告
三 Quarta的安裝及使用
官網:http://www.quartz-scheduler.org/下載最新的檔案,需要你註冊才能下載!也可在附件中下載
四 瞭解Quartz體繫結構
Quartz對任務調度的領域問題進行了高度的抽象,提出了調度器、任務和觸發器這3個核心的概念,並在org.quartz通過介面和類對重要的這些核心概念進行描述
Quartz 調度包的兩個基本單元是作業和觸發器。作業是能夠調度的可執行任務,觸發器提供了對作業的調度.
調度器:調度器用於將與作業觸發器關聯,一個作業可關聯多個觸發器,這樣每個觸發器被可以觸發的作業執行;一個觸發器可用於控制多個作業,觸發觸發時,
全部作業將獲得調度。Quartz的調度器由Scheduler介面體現.
作業:只需實現org.quartz.job介面即可.Job介面包含一個方法 execute(),execute方法體是被調度的作業體。一旦實現Job介面和execute()方法,
Quartz確定作業運作的時候,它將調用 execute()方法體。
觸發器:有SimpleTrigger和CronTrigger兩種類型
五 工程圖片
六 具體代碼如下
Job:是一個介面只有一個方法void execute(JobExecutionContext context),開發人員實現該介面定義運行任務,JobExecutionContext類提供了調度內容相關的各種資訊。Job運行時的資訊儲存在JobDataMap執行個體中
1 定義一個作業類: HelloJob.java
Java代碼
- import java.util.Date;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
-
- public class HelloJob implements Job {
-
- private static Logger _log = LoggerFactory.getLogger(HelloJob.class);
-
- public HelloJob() {
-
- }
-
- public void execute(JobExecutionContext context)
- throws JobExecutionException {
-
- _log.error(" 咫尺天涯: " + new Date());
-
- }
- }
2 測試類別
Java代碼
- import static org.quartz.JobBuilder.newJob;
- import static org.quartz.TriggerBuilder.newTrigger;
- import static org.quartz.DateBuilder.*;
- import java.util.Date;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerFactory;
- import org.quartz.Trigger;
- import org.quartz.impl.StdSchedulerFactory;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class SimpleExample {
-
- private static Logger log = LoggerFactory.getLogger(SimpleExample.class);
-
- public void run() throws Exception {
- // 通過SchedulerFactory擷取一個調度器執行個體
- SchedulerFactory sf = new StdSchedulerFactory();
-
- Scheduler sched = sf.getScheduler();
-
- Date runTime = evenMinuteDate(new Date());
-
- // 通過過JobDetail封裝HelloJob,同時指定Job在Scheduler中所屬組及名稱,這裡,組名為group1,而名稱為job1。
- JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
-
- // 建立一個SimpleTrigger執行個體,指定該Trigger在Scheduler中所屬組及名稱。
- // 接著設定調度的時間規則.目前時間運行
- Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
-
- // 註冊並進行調度
- sched.scheduleJob(job, trigger);
-
- // 啟動調度器
- sched.start();
-
- try {
- //當前線程等待65秒
- Thread.sleep(65L * 1000L);
- } catch (Exception e) {
-
- }
-
- //調度器停止運行
- sched.shutdown(true);
-
- log.error("結束運行。。。。");
-
- }
-
- public static void main(String[] args) throws Exception {
- SimpleExample example = new SimpleExample();
- example.run();
- }
- }
因為上官網下載麻煩,這裡就直接上傳了,方便大家下載!目錄結構如下:
Quartz所用到的jar
上傳Quartz檔案如下
Quartz2之入門樣本【轉】