(1)什么是Quartz?
Quartz是一個(gè)完全由Java編寫的開源作業(yè)調(diào)度框架,為在Java應(yīng)用程序中進(jìn)行作業(yè)調(diào)度提供了簡單卻強(qiáng)大的機(jī)制。Quartz允許開發(fā)人員根據(jù)時(shí)間間隔來調(diào)度作業(yè)。它實(shí)現(xiàn)了作業(yè)和觸發(fā)器的多對多的關(guān)系,還能把多個(gè)作業(yè)與不同的觸發(fā)器關(guān)聯(lián)。簡單地創(chuàng)建一個(gè)org.quarz.Job接口的Java類。
(2)Quartz的特點(diǎn);
作為一個(gè)優(yōu)秀的開源調(diào)度框架,Quartz 具有以下特點(diǎn):
① 強(qiáng)大的調(diào)度功能,例如支持豐富多樣的調(diào)度方法,可以滿足各種常規(guī)及特殊需求;
② 靈活的應(yīng)用方式,例如支持任務(wù)和調(diào)度的多種組合方式,支持調(diào)度數(shù)據(jù)的多種存儲方式;
③ 分布式和集群能力,Terracotta 收購后在原來功能基礎(chǔ)上作了進(jìn)一步提升。
④ Quartz 很容易與 Spring 集成實(shí)現(xiàn)靈活可配置的調(diào)度功能。
(3)Quartz專用詞匯說明;
下面是本文中用到的一些專用詞匯,在此聲明:
scheduler :
任務(wù)調(diào)度器
trigger :
觸發(fā)器,用于定義任務(wù)調(diào)度時(shí)間規(guī)則
job :
任務(wù),即被調(diào)度的任務(wù)
misfire :
錯過的,指本來應(yīng)該被執(zhí)行但實(shí)際沒有被執(zhí)行的任務(wù)調(diào)度
(4)Quartz任務(wù)調(diào)度基本實(shí)現(xiàn)原理;
Quartz 任務(wù)調(diào)度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任務(wù)調(diào)度的元數(shù)據(jù), scheduler 是實(shí)際執(zhí)行調(diào)度的控制器。
在 Quartz 中,trigger 是用于定義調(diào)度時(shí)間的元素,即按照什么時(shí)間規(guī)則去執(zhí)行任務(wù)。Quartz 中主要提供了四種類型的 trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,和 NthIncludedDayTrigger。這四種 trigger 可以滿足企業(yè)應(yīng)用中的絕大部分需求。
在 Quartz 中,job 用于表示被調(diào)度的任務(wù)。主要有兩種類型的 job:無狀態(tài)的(stateless)和有狀態(tài)的(stateful)。對于同一個(gè) trigger 來說,有狀態(tài)的 job 不能被并行執(zhí)行,只有上一次觸發(fā)的任務(wù)被執(zhí)行完之后,才能觸發(fā)下一次執(zhí)行。Job 主要有兩種屬性:volatility 和 durability,其中 volatility 表示任務(wù)是否被持久化到數(shù)據(jù)庫存儲,而 durability 表示在沒有 trigger 關(guān)聯(lián)的時(shí)候任務(wù)是否被保留。兩者都是在值為 true 的時(shí)候任務(wù)被持久化或保留。一個(gè) job 可以被多個(gè) trigger 關(guān)聯(lián),但是一個(gè) trigger 只能關(guān)聯(lián)一個(gè) job。
在 Quartz 中, scheduler 由 scheduler 工廠創(chuàng)建:DirectSchedulerFactory 或者 StdSchedulerFactory。 第二種工廠 StdSchedulerFactory 使用較多,因?yàn)?DirectSchedulerFactory 使用起來不夠方便,需要作許多詳細(xì)的手工編碼設(shè)置。 Scheduler 主要有三種:RemoteMBeanScheduler, RemoteScheduler 和 StdScheduler。本文以最常用的 StdScheduler 為例講解。這也是筆者在項(xiàng)目中所使用的 scheduler 類。
-
JAVA
+關(guān)注
關(guān)注
20文章
2988瀏覽量
109292 -
框架
+關(guān)注
關(guān)注
0文章
404瀏覽量
17874 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2039瀏覽量
62099 -
Quartz
+關(guān)注
關(guān)注
0文章
7瀏覽量
8092
發(fā)布評論請先 登錄
STM32 簡單多任務(wù)調(diào)度
如何利用UCOS引發(fā)任務(wù)調(diào)度?
請問FreeRTOS是如何實(shí)現(xiàn)調(diào)度的?
調(diào)度器的原理及其任務(wù)調(diào)度代碼實(shí)現(xiàn)
UCOSIII的任務(wù)管理與任務(wù)調(diào)度和切換簡述
網(wǎng)格任務(wù)調(diào)度算法研究
云任務(wù)閾值調(diào)度算法

移動終端最優(yōu)節(jié)能任務(wù)調(diào)度
spring4.0如何整合Quartz實(shí)現(xiàn)任務(wù)調(diào)度詳細(xì)資料和程序說明

如何使用spring4.0整合Quartz實(shí)現(xiàn)動態(tài)任務(wù)調(diào)度的程序資料說明

DSP實(shí)時(shí)多任務(wù)調(diào)度的解決方案
c語言實(shí)現(xiàn)任務(wù)調(diào)度器

Quartz中編碼中用到的幾個(gè)對象
任務(wù)調(diào)度系統(tǒng)設(shè)計(jì)的核心邏輯

評論