關(guān)于Quartz,我不想說太多,原因在于:Quartz官方提供的15個(gè)例子太經(jīng)典啦!!!還在網(wǎng)上找神馬亂七八糟的例子啊,這15個(gè)例子看看自己跑跑試試,學(xué)起來又快又輕松!!!本文附件附送這些例子啊!!!
Timer時(shí)序調(diào)度框架解析為了再降低一下看代碼的門檻,這里提供一些關(guān)鍵的概念性的描述,有所了解或者不想看文字的朋友請略過。或者看代碼有不懂的地方在來查看也可。
- Job:接口,只有一個(gè)方法void execute(JobExecutionContext context),開發(fā)者實(shí)現(xiàn)該接口定義Job所運(yùn)行的任務(wù),JobExecutionContext類提供了調(diào)度上下文的各種信息。Job運(yùn)行時(shí)的信息 保存在JobDataMap實(shí)例中。
- JobDetail:Quartz在每次執(zhí)行Job時(shí),都重新創(chuàng)建一個(gè)Job實(shí)例,所以它不直接接 受一個(gè)Job的實(shí)例,相反它接收一個(gè)Job實(shí)現(xiàn)類,以便運(yùn)行時(shí)通過newInstance()的反射機(jī)制實(shí)例化Job。因此需要通過一個(gè)類來描述Job的 實(shí)現(xiàn)類及其它相關(guān)的靜態(tài)信息,如Job名字、描述、關(guān)聯(lián)監(jiān)聽器等信息,JobDetail承擔(dān)了這一角色。通過該類的構(gòu)造函數(shù)可以更具體地了解它的功 用:JobDetail(java.lang.String name, java.lang.String group, java.lang.Class jobClass),該構(gòu)造函數(shù)要求指定Job的實(shí)現(xiàn)類,以及任務(wù)在Scheduler中的組名和Job名稱
- Trigger:是一個(gè)類,描述觸發(fā)Job執(zhí)行的時(shí)間觸發(fā)規(guī)則。主要有SimpleTrigger和CronTrigger這兩個(gè)子類。當(dāng)僅需觸發(fā)一次或者以固定時(shí)間間隔周期執(zhí)行,SimpleTrigger是最適合的選擇;而CronTrigger則可以通過Cron表達(dá)式定義出各種復(fù)雜時(shí)間規(guī)則的調(diào)度方案:如每早晨9:00執(zhí)行,周一、周三、周五下午5:00執(zhí)行等
- Calendar:org.quartz.Calendar和java.util.Calendar不同,它是一些日歷特定時(shí)間點(diǎn)的集合。一個(gè)Trigger可以和多個(gè)Calendar關(guān)聯(lián),以便排除或包含某些時(shí)間點(diǎn)
- Scheduler:Trigger和JobDetail可以注冊到Scheduler中,兩者在 Scheduler中擁有各自的組及名稱,組及名稱是Scheduler查找定位容器中某一對象的依據(jù)。Scheduler可以將Trigger綁定到某 一JobDetail中,這樣當(dāng)Trigger觸發(fā)時(shí),對應(yīng)的Job就被執(zhí)行。一個(gè)Job可以對應(yīng)多個(gè)Trigger,但一個(gè)Trigger只能對應(yīng)一個(gè) Job。可以通過SchedulerFactory創(chuàng)建一個(gè)Scheduler實(shí)例。Scheduler擁有一個(gè)SchedulerContext,它類 似于ServletContext,保存著Scheduler上下文信息,Job和Trigger都可以訪問SchedulerContext內(nèi)的信息。
- ThreadPool:Scheduler使用一個(gè)線程池作為任務(wù)運(yùn)行的基礎(chǔ)設(shè)施,任務(wù)通過共享線程池中的線程提高運(yùn)行效率。
posted on 2011-07-29 10:03
墻頭草 閱讀(577)
評論(0) 編輯 收藏