<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    呆羊在曬太陽(yáng)  
    公告
    • Y:哦,是你呀。
      X:我現(xiàn)在正在忙。
      Y:忙什么?
      X:呵呵,今天出太陽(yáng)了,我把錢(qián)搬出來(lái)曬一曬。
      ***********************
      abc
      小叉
      很高興能結(jié)識(shí)大家!
      ***********************
    日歷
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567
    統(tǒng)計(jì)
    • 隨筆 - 164
    • 文章 - 2
    • 評(píng)論 - 196
    • 引用 - 0

    導(dǎo)航

    常用鏈接

    留言簿(7)

    隨筆分類(lèi)(158)

    文章分類(lèi)(2)

    相冊(cè)

    log

    搜索

    •  

    積分與排名

    • 積分 - 71677
    • 排名 - 773

    最新評(píng)論

    閱讀排行榜

     

    quartz是一個(gè)高質(zhì)量的任務(wù)調(diào)度軟件包。其主要組成部分為:

    Scheduler接口: quartz的執(zhí)行線(xiàn)程,它根據(jù)Trigger決定調(diào)度時(shí)刻,根據(jù)JobDetail的說(shuō)明實(shí)例化并運(yùn)行Job

    JobDetail類(lèi): 可持久化的任務(wù)描述信息。任務(wù)雖然分組,但是僅用作管理標(biāo)示,任務(wù)之間并無(wú)實(shí)質(zhì)性關(guān)聯(lián), 例如無(wú)法定義job chain。

    Trigger類(lèi):任務(wù)的調(diào)度策略。這里的特點(diǎn)是調(diào)度策略與任務(wù)描述分開(kāi),調(diào)度策略和任務(wù)描述都可以分別在Scheduler注冊(cè),然后再關(guān)聯(lián)起來(lái)。JobDetail與Trigger的關(guān)系是一對(duì)多。

    JobDataMap: 將任務(wù)的運(yùn)行時(shí)可持久化狀態(tài)信息從JobDetail類(lèi)中分離出來(lái)

    Job接口: 任務(wù)的執(zhí)行代碼

    StatefulJob接口: 無(wú)狀態(tài)任務(wù)對(duì)應(yīng)的JobDataMap可以認(rèn)為是只讀的,而有狀態(tài)的任務(wù)在多次執(zhí)行過(guò)程中保留對(duì)JobDataMap所作的修改,一個(gè)后果是有狀態(tài)任務(wù)無(wú)法被并發(fā)執(zhí)行。

    JobExecutionException類(lèi): 可以通過(guò)JobExecutionException調(diào)整調(diào)度程序的下一步動(dòng)作
    Calendar接口: 用于從trigger的調(diào)度計(jì)劃中排除某些時(shí)間段,例如假期等。

    以上幾個(gè)部分的交互關(guān)系如下:
    class JobImpl implements Job{
    ??? public void execute(JobExecutionContext context) throws JobExecutionException{
    ??????? JobDetail detail = context.getJobDetail();
    ??????? JobDataMap dataMap = detail.getJobDataMap();
    ??????? ...
    ??? }
    }

    scheduler.addCalendar("myHolidays", holidayCalendar, false);
    trigger.setCanlendarName("myHolidays");

    JobDetail jobDetail = new JobDetail(jobName, jobGroupName, JobImpl.class);

    scheduler.scheduleJob(jobDetail, trigger);

    JobDetail可以設(shè)置如下屬性:
    1. Durability: non-durable的任務(wù)當(dāng)不再與任何active trigger關(guān)聯(lián)的時(shí)候?qū)?huì)從scheduler中被自動(dòng)刪除。
    2. Volatility: volatile的任務(wù)在scheduler的兩次啟動(dòng)之間不會(huì)被持久化
    3. RequestsRecovery: 如果在執(zhí)行過(guò)程中程序意外崩潰,標(biāo)記為"request recovery"的任務(wù)在scheduler重起之后將會(huì)被再次執(zhí)行,此時(shí)JobExecutionContext.isRecovering()返回true.

    Trigger可以設(shè)置如下屬性:
    1. misfireInstruction: 設(shè)定當(dāng)trigger錯(cuò)過(guò)了觸發(fā)時(shí)刻的時(shí)候需要采取的處理策略

    SimpleTrigger按照固定的時(shí)間間隔進(jìn)行觸發(fā)
    startTime, endTime, repeatCount, repeatInterval

    CronTrigger按照日歷間隔進(jìn)行觸發(fā)
    seconds minutes hours day-of-month month day-of-week

    在quartz內(nèi)部,QuartzSchedulerThread按照時(shí)間順序選擇trigger(沒(méi)有任務(wù)優(yōu)先級(jí)的概念), 然后在JobRunShell中運(yùn)行Job。

    JobRunShell中的調(diào)用順序如下:

    TriggerListener.triggerFired
    ??? Called by the Scheduler when a Trigger has fired, and it's associated JobDetail is about to be executed.

    TriggerListener.vetoJobExecution
    ??? Called by the Scheduler when a Trigger has fired, and it's associated JobDetail is about to be executed.

    JobListener.jobToBeExecuted
    ??? Called by the Scheduler when a JobDetail is about to be executed (an associated Trigger has occured).

    Job.execute
    ??? Called by the Scheduler when a Trigger fires that is associated with the Job.
    ?
    JobListener.jobWasExecuted
    ??? Called by the Scheduler after a JobDetail has been executed, and be for the associated Trigger's triggered(xx) method has

    been called.

    Trigger.executionComplete
    ??? Called after the Scheduler has executed the JobDetail associated with the Trigger in order to get the final instruction

    code from the trigger.

    TriggerListener.triggerComplete
    ???? Called by the Scheduler when a Trigger has fired, it's associated JobDetail has been executed, and it's triggered(xx)

    method has been called.

    SchedulerListener.triggerFinalized [if(trigger.getNextFireTime() == null)]
    ???? Called by the Scheduler when a Trigger has reached the condition in which it will never fire again.
    posted on 2006-09-21 14:33 小叉 閱讀(288) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
     
    Copyright © 小叉 Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 国产极品美女高潮抽搐免费网站| 一区二区三区在线免费观看视频| 98精品全国免费观看视频| 在线亚洲97se亚洲综合在线| 豆国产96在线|亚洲| 青青久在线视频免费观看 | 中文字幕亚洲第一| 一区二区三区免费在线观看| 国产成人精品久久亚洲高清不卡 | 欧洲乱码伦视频免费国产 | 亚洲精品无码一区二区| 欧洲乱码伦视频免费| 亚洲综合在线一区二区三区| 免费网站看v片在线香蕉| 美女18一级毛片免费看| 国产精品亚洲综合一区| 国产偷伦视频免费观看| 亚洲成a人片在线观看中文!!!| 国产在线观看免费观看不卡| 亚洲精品国产第一综合99久久| 男女午夜24式免费视频| 久久精品国产亚洲AV大全| 国产在线jyzzjyzz免费麻豆| 亚洲欧洲无码AV不卡在线| 亚洲高清无码综合性爱视频| 成全视频高清免费观看电视剧| 亚洲视频网站在线观看| 岛国岛国免费V片在线观看| 午夜亚洲国产理论秋霞| 国产福利在线免费| 无遮挡国产高潮视频免费观看| 亚洲精品成人片在线观看精品字幕 | 国产裸模视频免费区无码| h片在线播放免费高清| 久久精品国产96精品亚洲| 最近中文字幕无免费视频| jizz免费一区二区三区| 亚洲AV无码国产精品色午友在线 | 无码日韩精品一区二区免费暖暖| 亚洲日产2021三区在线| 亚洲成年看片在线观看|