Java EE學習--Quartz基本用法

新浪博客徹底不適合寫技術類文章。原本是想找一個技術性的博客發發本身最近學的東西,發現博客園起源於咱江蘇,一個很是質樸的網站,行,咱要養成好習慣,之後沒事多總結總結經驗吧。不少時候都在網上搜索別人的總結,我本身也總結些東西,或許多多少少能幫得上別人。數據庫

 

首先提到的是Quartz,一個開源的按期執行計劃任務的框架。其實我心裏好奇這個框架好久了,像那些能定時修改數據庫數據,定時分配任務的功能一直以爲很神奇。心動不如行動,今天我就小小的學習了一下用法,力求言簡意賅,你們都懂的我就不說了。windows

 

第一步:下載Quartz包:框架

Quartz的最新版本能夠上官網上下載,網址:http://www.quartz-scheduler.org/downloads。下載最新版的就好,通過測試Java 1.6和1.7都是能夠支持的。ide

下載完畢後,解壓縮。後綴.tar.gz在Linux下用tar -zxvf,在windows下隨便一個解壓縮的軟件都行,這裏再也不詳述。學習

 

第二步:建立Quartz工程:測試

以Eclipse爲例,建立一個普通的Java工程,而後在Build Path中,導入Quartz目錄下/lib/下除了c3p0之外全部Jar包。優化

Quartz的原理大概是:按照時間計劃,按期執行目標類的execute方法(經過反射,因此目標類須要實現接口)網站

接着開始編寫Java代碼,咱們先寫一個類,實現org.quartz.Job接口,重寫execute方法(有點像struts2?)代碼以下:ui

public class MyJob implements Job { @Override public void execute(JobExecutionContext ctx) throws JobExecutionException { //在這裏編寫要執行的計劃任務,這裏爲了簡單起見,寫了一行打印語句 //實際多是數據庫的CRUD操做,或者定時對操做系統環境進行優化,等等
           System.out.println("Now It's My Running Time"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Job Time is:"+format.format(new Date())); } }

接着,咱們須要對這個任務進行調度。在哪裏編寫調度代碼呢?先從最簡單的main方式說明吧,新建一個類,在main方法中:spa

public static void main(String[] args) throws Exception { //建立scheduler工廠類,並生成scheduler對象
        SchedulerFactory factory = new StdSchedulerFactory(); Scheduler sche = factory.getScheduler(); //先輸出當前時間
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(format.format(new Date())); //什麼時候執行這個計劃?須要先生成一個Date對象,表示計劃要執行的時間 //DateBuilder是Quartz提供的類,evenMinuteDateAfterNow是從如今起下一分鐘
        Date runTime = DateBuilder.evenMinuteDateAfterNow(); //分別建立JobDetail和Trigger對象,方式相似,都是靜態構造,XXXBuilder.newXXX().build()
        JobDetail job = JobBuilder.newJob(MyJob.class).build(); Trigger trigger = TriggerBuilder.newTrigger().startAt(runTime).build(); //把任務和觸發器加到scheduler中
 sche.scheduleJob(job, trigger); //開始任務
 sche.start(); //此時Quartz應該是另起線程去獲取時間了,因此應該在主線程等待一段時間,等計劃任務執行完畢 //要否則main方法一結束,Quartz也就不運行了。
        Thread.sleep(60*1000);
     sche.shutdown(); }

 

運行完畢後,Console顯示相似以下結果:

2014-08-01 22:10:15 Now It's My Running Time
Job Time is:2014-08-01 22:11:00

確實是按照預期目標運行的,Quartz就是這麼簡單!

相關文章
相關標籤/搜索