前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
環境: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 的目錄結構和內容?
Docs Quartz 框架的JavaDoc Api 說明文檔?
Examples 多方面使用 Quartz 的例子?
Lib Quartz 使用到的第三方包?
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文件如下??
官方文檔見附件:quartz-docs.7z
?
下載地址:http://liuzidong.iteye.com/blog/1118992
轉自:http://liuzidong.iteye.com/blog/1118992
?