2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Quartz任務(wù)調(diào)度快速入門1概述概述各種企業(yè)應(yīng)用幾乎都會碰到任務(wù)調(diào)度的需求,就拿論壇來說:每隔半個小時生成精華文章的RSS文件,每天凌晨統(tǒng)計論壇用戶的積分排名,每隔30分鐘執(zhí)行鎖定用戶解鎖任務(wù)。對于一個典型的MIS系統(tǒng)來說,在每月1號凌晨統(tǒng)計上個月各部門的業(yè)務(wù)數(shù)據(jù)生成月報表,每半個小時查詢用戶是否已經(jīng)有快到期的待處理業(yè)務(wù)……,這樣的例子俯拾皆是,不勝枚舉。任務(wù)調(diào)度本身涉及到多線程并發(fā)、運(yùn)行時間規(guī)則制定和解析、場景保持與恢復(fù)、線程池維護(hù)

2、等諸多方面的工作。如果直接使用自定義線程這種刀耕火種的原始辦法,開發(fā)任務(wù)調(diào)度程序是一項頗具挑戰(zhàn)性的工作。Java開源的好處就是:領(lǐng)域問題都能找到現(xiàn)成的解決方案。OpenSymphony所提供的Quartz自2001年發(fā)布版本以來已經(jīng)被眾多項目作為任務(wù)調(diào)度的解決方案,Quartz在提供巨大靈活性的同時并未犧牲其簡單性,它所提供的強(qiáng)大功能使你可以應(yīng)付絕大多數(shù)的調(diào)度需求。Quartz在開源任務(wù)調(diào)度框架中的翹首,它提供了強(qiáng)大任務(wù)調(diào)度機(jī)制,難能可

3、貴的是它同時保持了使用的簡單性。Quartz允許開發(fā)人員靈活地定義觸發(fā)器的調(diào)度時間表,并可以對觸發(fā)器和任務(wù)進(jìn)行關(guān)聯(lián)映射。此外,Quartz提供了調(diào)度運(yùn)行環(huán)境的持久化機(jī)制,可以保存并恢復(fù)調(diào)度現(xiàn)場,即使系統(tǒng)因故障關(guān)閉,任務(wù)調(diào)度現(xiàn)場數(shù)據(jù)并不會丟失。此外,Quartz還提供了組件式的偵聽器、各種插件、線程池等功能。了解了解QuartzQuartz體系結(jié)構(gòu)體系結(jié)構(gòu)Quartz對任務(wù)調(diào)度的領(lǐng)域問題進(jìn)行了高度的抽象,提出了調(diào)度器、任務(wù)和觸發(fā)器這3個核

4、心的概念,并在g.quartz通過接口和類對重要的這些核心概念進(jìn)行描述:●Job:是一個接口,只有一個方法voidexecute(JobExecutionContextcontext),開發(fā)者實(shí)現(xiàn)該接口定義運(yùn)行任務(wù),JobExecutionContext類提供了調(diào)度上下文的各種信息。Job運(yùn)行時的信息保存在JobDataMap實(shí)例中;●JobDetail:Quartz在每次執(zhí)行Job時,都重新創(chuàng)建一個Job實(shí)例,所以它不直接接受一個Jo

5、b的實(shí)例,相反它接收一個Job實(shí)現(xiàn)類,以便運(yùn)行時通過newInstance()的反射機(jī)制實(shí)例化Job。因此需要通過一個類來描述Job的實(shí)現(xiàn)類及其它相關(guān)的靜態(tài)信息,如Job名字、描述、關(guān)聯(lián)監(jiān)聽器等信息,JobDetail承擔(dān)了這一角色。Job有一個StatefulJob子接口,代表有狀態(tài)的任務(wù),該接口是一個沒有方法的標(biāo)簽接口,其目的是讓Quartz知道任務(wù)的類型,以便采用不同的執(zhí)行方案。無狀態(tài)任務(wù)在執(zhí)行時擁有自己的JobDataMap拷貝

6、,對JobDataMap的更改不會影響下次的執(zhí)行。而有狀態(tài)任務(wù)共享共享同一個JobDataMap實(shí)例,每次任務(wù)執(zhí)行對JobDataMap所做的更改會保存下來,后面的執(zhí)行可以看到這個更改,也即每次執(zhí)行任務(wù)后都會對后面的執(zhí)行發(fā)生影響。正因?yàn)檫@個原因,無狀態(tài)的Job可以并發(fā)執(zhí)行,而有狀態(tài)的StatefulJob不能并發(fā)執(zhí)行,這意味著如果前次的StatefulJob還沒有執(zhí)行完畢,下一次的任務(wù)將阻塞等待,直到前次任務(wù)執(zhí)行完畢。有狀態(tài)任務(wù)比無狀態(tài)

7、任務(wù)需要考慮更多的因素,程序往往擁有更高的復(fù)雜度,因此除非必要,應(yīng)該盡量使用無狀態(tài)的Job。如果Quartz使用了數(shù)據(jù)庫持久化任務(wù)調(diào)度信息,無狀態(tài)的JobDataMap僅會在Scheduler注冊任務(wù)時保持一次,而有狀態(tài)任務(wù)對應(yīng)的JobDataMap在每次執(zhí)行任務(wù)后都會進(jìn)行保存。Trigger自身也可以擁有一個JobDataMap,其關(guān)聯(lián)的Job可以通過JobExecutionContext#getTrigger().getJobDat

8、aMap()獲取Trigger中的JobDataMap。不管是有狀態(tài)還是無狀態(tài)的任務(wù),在任務(wù)執(zhí)行期間對Trigger的JobDataMap所做的更改都不會進(jìn)行持久,也即不會對下次的執(zhí)行產(chǎn)生影響。Quartz擁有完善的事件和監(jiān)聽體系,大部分組件都擁有事件,如任務(wù)執(zhí)行前事件、任務(wù)執(zhí)行后事件、觸發(fā)器觸發(fā)前事件、觸發(fā)后事件、調(diào)度器開始事件、關(guān)閉事件等等,可以注冊相應(yīng)的監(jiān)聽器處理感興趣的事件。圖1描述了Scheduler的內(nèi)部組件結(jié)構(gòu),Sched

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論