<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: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 亚洲AV日韩精品久久久久| 亚洲无线观看国产精品| 亚洲三级中文字幕| 91精品手机国产免费| 91亚洲精品视频| 最近高清中文字幕免费| 亚洲黄色在线观看视频| 99在线精品免费视频九九视| 亚洲成人黄色网址| 免费观看成人毛片a片2008| 国产成人精品亚洲日本在线| 人妻视频一区二区三区免费| 亚洲综合无码一区二区痴汉| 日韩视频免费一区二区三区| 立即播放免费毛片一级| 成人亚洲性情网站WWW在线观看| caoporn国产精品免费| 亚洲日本一区二区三区在线| 亚洲视频免费在线观看| 亚洲成人黄色在线观看| 国产又黄又爽又猛的免费视频播放 | 99久久免费看国产精品| wwwxxx亚洲| 免费看国产精品麻豆| a色毛片免费视频| 亚洲无限乱码一二三四区| 国产精品va无码免费麻豆| 久久国产一片免费观看| 中文字幕亚洲精品资源网| 成人免费无码大片A毛片抽搐| 爱情岛亚洲论坛在线观看| 亚洲综合色婷婷七月丁香| 国产成人精品免费视频大| 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 | 亚洲依依成人亚洲社区| 自拍偷自拍亚洲精品第1页| 国产人成免费视频网站| 免费激情网站国产高清第一页| 亚洲无删减国产精品一区| 亚洲日韩在线观看免费视频| 无码专区AAAAAA免费视频|