quartz框架(六)-ThreadPool

JobRunShell

上篇博文帖蔓,博主講了Listener相關(guān)的內(nèi)容檬贰。本篇博文惭嚣,博主將要詳細(xì)介紹一下JobRunShell的功能。簡(jiǎn)單的來說悔政,JobRunShell就是Job實(shí)例運(yùn)行時(shí)所在的環(huán)境晚吞,也就是說在JobRunShell中調(diào)用Job接口的execute方法。

Runnable接口

在講解JobRunShell之前谋国,我們先了解或者加強(qiáng)一下Runnable接口的相關(guān)知識(shí)槽地。在java編程中,創(chuàng)建Thread一般有三種方式芦瘾。第一種是定義一個(gè)類去繼承Thread類捌蚊,并重寫run方法。第二種是在創(chuàng)建Thread的時(shí)候旅急,傳入對(duì)應(yīng)Runnable方法的實(shí)現(xiàn)逢勾。第二種是在創(chuàng)建Thread的時(shí)候牡整,傳入對(duì)應(yīng)FutureTask藐吮,F(xiàn)utureTask中含有Callable接口的引用。因此逃贝,我們知道需要在線程中運(yùn)行的對(duì)象可以實(shí)現(xiàn)Runnable方法谣辞。

并且博主的WorkThread博文中就介紹了工作者相關(guān)的內(nèi)容,它會(huì)接收ThreadPool線程池給它投遞的Runnable實(shí)體沐扳,因此查看JobRunShell的源碼可知泥从,它就是那個(gè)被投遞的實(shí)例對(duì)象。

方法定義

通過查看源碼可知沪摄,JobRunShell具有幾個(gè)重要的方法躯嫉,方法如下所示:


//初始化方法
void initialize(QuartzScheduler sched)
        throws SchedulerException

//實(shí)現(xiàn)了Runnable的接口
void run();

//模板方法,可由子類重寫
void begin();

//模板方法杨拐,可由子類重寫
void complete();

initialize

initialize是JobRunShell的初始化方法祈餐。不知道細(xì)心的小伙伴有沒有方法,對(duì)于一些比較重要的對(duì)象而言哄陶,它都會(huì)有initialize方法帆阳。spring容器中的@bean注解就可以對(duì)應(yīng)bean的initMethod方法。

該方法邏輯如下:

  1. 會(huì)使用jobFactory實(shí)例化出對(duì)應(yīng)jobClass的對(duì)象屋吨,并且設(shè)置這個(gè)對(duì)象的其它屬性蜒谤。
  2. 構(gòu)造出jobExecutionContext接口的實(shí)例,該對(duì)象會(huì)作為參數(shù)至扰,在job接口的execute方法中傳入鳍徽。

run

run方法在線程運(yùn)行的時(shí)候被調(diào)用,它重寫之后的方法邏輯如下:

  1. 調(diào)用begin模板方法敢课,這里使用到了模板方法設(shè)計(jì)模式旬盯。
  2. 調(diào)用對(duì)應(yīng)的trigger監(jiān)聽器triggerFired方法。
  3. 調(diào)用對(duì)應(yīng)的trigger監(jiān)聽器vetoJobExecution方法,判斷是否需要拒絕執(zhí)行胖翰。
  4. 調(diào)用對(duì)應(yīng)的job監(jiān)聽器的jobExecutionVetoed方法接剩。
  5. 會(huì)調(diào)用job的execute方法,并傳入jobExecutionContext實(shí)例萨咳,同時(shí)記錄執(zhí)行時(shí)間懊缺。
  6. 調(diào)用對(duì)應(yīng)的job監(jiān)聽器的jobWasExecuted方法。
  7. 調(diào)用該trigger的executionComplete方法培他,得到trigger的完成策略鹃两。
  8. 調(diào)用complete模板方法
  9. 通知jobStoreJob執(zhí)行完成,調(diào)用JobStore的triggeredJobComplete方法舀凛。(如tigger沒有下次觸發(fā)時(shí)間俊扳,就需要?jiǎng)h除調(diào)trigger)。

博主微信公眾號(hào)

<img src="https://gitee.com/chenhaogit/blogimages/raw/master/xsj/wzgzh-8cm.jpg" style="float:right"/>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猛遍,一起剝皮案震驚了整個(gè)濱河市馋记,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌懊烤,老刑警劉巖梯醒,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異腌紧,居然都是意外死亡茸习,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門壁肋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來号胚,“玉大人,你說我怎么就攤上這事浸遗∶ㄐ玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵乙帮,是天一觀的道長(zhǎng)杜漠。 經(jīng)常有香客問我,道長(zhǎng)察净,這世上最難降的妖魔是什么驾茴? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮氢卡,結(jié)果婚禮上锈至,老公的妹妹穿的比我還像新娘。我一直安慰自己译秦,他們只是感情好峡捡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布击碗。 她就那樣靜靜地躺著,像睡著了一般们拙。 火紅的嫁衣襯著肌膚如雪稍途。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天砚婆,我揣著相機(jī)與錄音械拍,去河邊找鬼。 笑死装盯,一個(gè)胖子當(dāng)著我的面吹牛坷虑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播埂奈,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼迄损,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了账磺?” 一聲冷哼從身側(cè)響起芹敌,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绑谣,沒想到半個(gè)月后党窜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拗引,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡借宵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矾削。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤玫。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哼凯,靈堂內(nèi)的尸體忽然破棺而出欲间,到底是詐尸還是另有隱情,我是刑警寧澤断部,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布猎贴,位于F島的核電站,受9級(jí)特大地震影響蝴光,放射性物質(zhì)發(fā)生泄漏她渴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一蔑祟、第九天 我趴在偏房一處隱蔽的房頂上張望趁耗。 院中可真熱鬧,春花似錦疆虚、人聲如沸苛败。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)罢屈。三九已至嘀韧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缠捌,已是汗流浹背乳蛾。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鄙币,地道東北人肃叶。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像十嘿,于是被迫代替她去往敵國(guó)和親因惭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 首先介紹一下Quartz啟動(dòng)過程和幾個(gè)核心類的主要職責(zé)绩衷,在其他的文章里蹦魔,分別詳細(xì)的介紹這幾個(gè)核心類。 1咳燕、通常勿决,調(diào)...
    mxwgong閱讀 1,261評(píng)論 0 1
  • 任務(wù)調(diào)度簡(jiǎn)介 1、什么時(shí)候需要任務(wù)調(diào)度 業(yè)務(wù)場(chǎng)景:1)賬單日或者還款日上午 9 點(diǎn)招盲,給每個(gè)信用卡客戶發(fā)送賬單通知低缩,...
    vincent浩哥閱讀 2,053評(píng)論 0 0
  • 原文:https://blog.csdn.net/zixiao217/article/details/530155...
    Alex90閱讀 1,537評(píng)論 0 0
  • 什么是定時(shí)任務(wù)調(diào)度 基于給定的時(shí)間點(diǎn),給定的時(shí)間間隔或者給定的執(zhí)行次數(shù)自動(dòng)完成執(zhí)行任務(wù) 在Java中的定時(shí)調(diào)度工具...
    Hey_Shaw閱讀 2,508評(píng)論 2 1
  • 概述 了解Quartz體系結(jié)構(gòu) Quartz對(duì)任務(wù)調(diào)度的領(lǐng)域問題進(jìn)行了高度的抽象曹货,提出了調(diào)度器咆繁、任務(wù)和觸發(fā)器這3個(gè)...
    張晨輝Allen閱讀 2,227評(píng)論 2 11