呆羊在曬太陽 |
|
|||
公告
日歷
統計
導航常用鏈接留言簿(7)隨筆分類(158)
文章分類(2)相冊log搜索積分與排名
最新評論
閱讀排行榜
|
quartz是一個高質量的任務調度軟件包。其主要組成部分為: Scheduler接口: quartz的執行線程,它根據Trigger決定調度時刻,根據JobDetail的說明實例化并運行Job JobDetail類: 可持久化的任務描述信息。任務雖然分組,但是僅用作管理標示,任務之間并無實質性關聯, 例如無法定義job chain。 Trigger類:任務的調度策略。這里的特點是調度策略與任務描述分開,調度策略和任務描述都可以分別在Scheduler注冊,然后再關聯起來。JobDetail與Trigger的關系是一對多。 JobDataMap: 將任務的運行時可持久化狀態信息從JobDetail類中分離出來 Job接口: 任務的執行代碼 StatefulJob接口: 無狀態任務對應的JobDataMap可以認為是只讀的,而有狀態的任務在多次執行過程中保留對JobDataMap所作的修改,一個后果是有狀態任務無法被并發執行。 JobExecutionException類: 可以通過JobExecutionException調整調度程序的下一步動作 以上幾個部分的交互關系如下: scheduler.addCalendar("myHolidays", holidayCalendar, false); JobDetail jobDetail = new JobDetail(jobName, jobGroupName, JobImpl.class); scheduler.scheduleJob(jobDetail, trigger); JobDetail可以設置如下屬性: Trigger可以設置如下屬性: SimpleTrigger按照固定的時間間隔進行觸發 CronTrigger按照日歷間隔進行觸發 在quartz內部,QuartzSchedulerThread按照時間順序選擇trigger(沒有任務優先級的概念), 然后在JobRunShell中運行Job。 JobRunShell中的調用順序如下: TriggerListener.triggerFired TriggerListener.vetoJobExecution JobListener.jobToBeExecuted Job.execute been called. Trigger.executionComplete code from the trigger. TriggerListener.triggerComplete 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. |
![]() |
|
Copyright © 小叉 | Powered by: 博客園 模板提供:滬江博客 |