0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Quartz任務(wù)調(diào)度基本實現(xiàn)原理

jf_78858299 ? 來源:SpringBoot ? 作者: 林祥纖 ? 2023-04-12 10:48 ? 次閱讀

(1)什么是Quartz?

Quartz是一個完全由Java編寫的開源作業(yè)調(diào)度框架,為在Java應(yīng)用程序中進(jìn)行作業(yè)調(diào)度提供了簡單卻強(qiáng)大的機(jī)制。Quartz允許開發(fā)人員根據(jù)時間間隔來調(diào)度作業(yè)。它實現(xiàn)了作業(yè)和觸發(fā)器的多對多的關(guān)系,還能把多個作業(yè)與不同的觸發(fā)器關(guān)聯(lián)。簡單地創(chuàng)建一個org.quarz.Job接口的Java類。

(2)Quartz的特點;

作為一個優(yōu)秀的開源調(diào)度框架,Quartz 具有以下特點:

① 強(qiáng)大的調(diào)度功能,例如支持豐富多樣的調(diào)度方法,可以滿足各種常規(guī)及特殊需求;

② 靈活的應(yīng)用方式,例如支持任務(wù)和調(diào)度的多種組合方式,支持調(diào)度數(shù)據(jù)的多種存儲方式;

③ 分布式和集群能力,Terracotta 收購后在原來功能基礎(chǔ)上作了進(jìn)一步提升。

④ Quartz 很容易與 Spring 集成實現(xiàn)靈活可配置的調(diào)度功能。

(3)Quartz專用詞匯說明;

下面是本文中用到的一些專用詞匯,在此聲明:

scheduler

任務(wù)調(diào)度器

trigger

觸發(fā)器,用于定義任務(wù)調(diào)度時間規(guī)則

job

任務(wù),即被調(diào)度的任務(wù)

misfire

錯過的,指本來應(yīng)該被執(zhí)行但實際沒有被執(zhí)行的任務(wù)調(diào)度

(4)Quartz任務(wù)調(diào)度基本實現(xiàn)原理;

Quartz 任務(wù)調(diào)度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任務(wù)調(diào)度的元數(shù)據(jù), scheduler 是實際執(zhí)行調(diào)度的控制器。

在 Quartz 中,trigger 是用于定義調(diào)度時間的元素,即按照什么時間規(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)。對于同一個 trigger 來說,有狀態(tài)的 job 不能被并行執(zhí)行,只有上一次觸發(fā)的任務(wù)被執(zhí)行完之后,才能觸發(fā)下一次執(zhí)行。Job 主要有兩種屬性:volatility 和 durability,其中 volatility 表示任務(wù)是否被持久化到數(shù)據(jù)庫存儲,而 durability 表示在沒有 trigger 關(guān)聯(lián)的時候任務(wù)是否被保留。兩者都是在值為 true 的時候任務(wù)被持久化或保留。一個 job 可以被多個 trigger 關(guān)聯(lián),但是一個 trigger 只能關(guān)聯(lián)一個 job。

在 Quartz 中, scheduler 由 scheduler 工廠創(chuàng)建:DirectSchedulerFactory 或者 StdSchedulerFactory。 第二種工廠 StdSchedulerFactory 使用較多,因為 DirectSchedulerFactory 使用起來不夠方便,需要作許多詳細(xì)的手工編碼設(shè)置。 Scheduler 主要有三種:RemoteMBeanScheduler, RemoteScheduler 和 StdScheduler。本文以最常用的 StdScheduler 為例講解。這也是筆者在項目中所使用的 scheduler 類。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2952

    瀏覽量

    104479
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    398

    瀏覽量

    17404
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1995

    瀏覽量

    61011
  • Quartz
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    7924
收藏 人收藏

    評論

    相關(guān)推薦

    STM32 簡單多任務(wù)調(diào)度

    不需要這樣頻繁的執(zhí)行,白白耗費了CPU的處理。因此可以考慮實現(xiàn)一個調(diào)度策略來解決這個問題。對于每個任務(wù),我們可以定義這樣一個結(jié)構(gòu):typedef struct{void (*fTask)(void
    發(fā)表于 03-09 15:59

    如何利用UCOS引發(fā)任務(wù)調(diào)度?

    我看資料中的任務(wù)調(diào)度往往發(fā)生在程序延時中,程序釋放CPU引發(fā)任務(wù)調(diào)度,但是我希望程序能夠更快的運(yùn)行,不想使用延時函數(shù),有什么其他的方法開啟任務(wù)
    發(fā)表于 10-24 04:36

    請問FreeRTOS是如何實現(xiàn)調(diào)度的?

    了stm32的官方例程,原理上的東西大致懂了,可在程序中是如何實現(xiàn)的呢,C語言障礙,沒看懂。首先是調(diào)度函數(shù),函數(shù)函數(shù)是如何執(zhí)行的呢?如下圖,新建任務(wù)后執(zhí)行調(diào)度函數(shù),為什么沒用循環(huán),
    發(fā)表于 07-30 07:40

    調(diào)度器的原理及其任務(wù)調(diào)度代碼實現(xiàn)

    、超級循環(huán)2、時間片與時標(biāo)3、調(diào)度算法介紹1)時間片輪轉(zhuǎn)調(diào)度2)強(qiáng)制試調(diào)度4、注意事項所有任務(wù)的執(zhí)行時間不能超過時標(biāo)的時間三、任務(wù)
    發(fā)表于 02-17 07:07

    UCOSIII的任務(wù)管理與任務(wù)調(diào)度和切換簡述

    就緒表7、任務(wù)調(diào)度和切換1、任務(wù)調(diào)度時間片輪轉(zhuǎn)調(diào)度2、任務(wù)切換8、UCOSIII的
    發(fā)表于 02-18 06:14

    網(wǎng)格任務(wù)調(diào)度算法研究

    網(wǎng)格任務(wù)調(diào)度算法是影響網(wǎng)格成功與否的關(guān)鍵技術(shù)之一。本文總結(jié)了網(wǎng)格計算系統(tǒng)的體系結(jié)構(gòu)和特征,分析了網(wǎng)格任務(wù)調(diào)度算法的基本原理和性能指標(biāo),并對各種調(diào)度
    發(fā)表于 08-14 10:27 ?10次下載

    任務(wù)閾值調(diào)度算法

    針對當(dāng)前云任務(wù)調(diào)度算法在密碼云環(huán)境中無法實現(xiàn)任務(wù)實時處理的問題,提出一種基于滾動優(yōu)化窗口的實時閾值調(diào)度方法。首先,將密鑰調(diào)用環(huán)節(jié)融入密碼任務(wù)
    發(fā)表于 11-24 17:08 ?5次下載
    云<b class='flag-5'>任務(wù)</b>閾值<b class='flag-5'>調(diào)度</b>算法

    移動終端最優(yōu)節(jié)能任務(wù)調(diào)度

    討論在移動終端設(shè)備下硬實時任務(wù)調(diào)度的原理、機(jī)制、策略。在硬實時任務(wù)對時效性的要求與現(xiàn)時任務(wù)對能耗管理的要求這2個約束條件下對任務(wù)進(jìn)行
    發(fā)表于 02-07 16:30 ?1次下載

    spring4.0如何整合Quartz實現(xiàn)任務(wù)調(diào)度詳細(xì)資料和程序說明

    Quartz框架是一個全功能、開源的任務(wù)調(diào)度服務(wù),可以集成幾乎任何的java應(yīng)用程序—從小的單片機(jī)系統(tǒng)到大型的電子商務(wù)系統(tǒng)。Quartz可以執(zhí)行上千上萬的
    發(fā)表于 05-06 18:23 ?1次下載
    spring4.0如何整合<b class='flag-5'>Quartz</b><b class='flag-5'>實現(xiàn)任務(wù)</b><b class='flag-5'>調(diào)度</b>詳細(xì)資料和程序說明

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

    Quartz框架是一個全功能、開源的任務(wù)調(diào)度服務(wù),可以集成幾乎任何的java應(yīng)用程序—從小的單片機(jī)系統(tǒng)到大型的電子商務(wù)系統(tǒng)。Quartz可以執(zhí)行上千上萬的
    發(fā)表于 04-26 18:26 ?0次下載
    如何使用spring4.0整合<b class='flag-5'>Quartz</b><b class='flag-5'>實現(xiàn)</b>動態(tài)<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>的程序資料說明

    DSP實時多任務(wù)調(diào)度的解決方案

    本文闡述了一個用于DSP的簡潔而實用的實時多任務(wù)調(diào)度內(nèi)核的實現(xiàn)方法。DSP由于其架構(gòu)的特殊性,在任務(wù)調(diào)度方面與
    的頭像 發(fā)表于 03-24 15:22 ?4700次閱讀

    c語言實現(xiàn)任務(wù)調(diào)度

    、超級循環(huán)2、時間片與時標(biāo)3、調(diào)度算法介紹1)時間片輪轉(zhuǎn)調(diào)度2)強(qiáng)制試調(diào)度4、注意事項所有任務(wù)的執(zhí)行時間不能超過時標(biāo)的時間三、任務(wù)
    發(fā)表于 12-22 18:51 ?8次下載
    c語言<b class='flag-5'>實現(xiàn)任務(wù)</b><b class='flag-5'>調(diào)度</b>器

    Quartz中編碼中用到的幾個對象

    在使用Quartz的時候,我們需要用到Quartz的幾個對象:Job(任務(wù)),JobDetail(任務(wù)定義:使用JobDetail來定義定時任務(wù)
    的頭像 發(fā)表于 04-12 10:50 ?404次閱讀

    任務(wù)調(diào)度系統(tǒng)設(shè)計的核心邏輯

    Redis的讀寫性能極好,分布式鎖也比Quartz數(shù)據(jù)庫行級鎖更輕量級。當(dāng)然Redis鎖也可以替換成Zookeeper鎖,也是同樣的機(jī)制。 在小型項目中,使用:定時任務(wù)框架(Quartz/Spring Schedule)和
    的頭像 發(fā)表于 01-02 15:09 ?767次閱讀
    <b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>系統(tǒng)設(shè)計的核心邏輯

    鴻蒙OS 分布式任務(wù)調(diào)度

    形式、數(shù)據(jù)結(jié)構(gòu)、服務(wù)描述語言,屏蔽硬件差異;支持遠(yuǎn)程啟動、遠(yuǎn)程調(diào)用、業(yè)務(wù)無縫遷移等分布式任務(wù)。 分布式任務(wù)調(diào)度平臺在底層實現(xiàn) Ability(分布式
    的頭像 發(fā)表于 01-29 16:50 ?439次閱讀