【JAVA】Quartz 任務調度和異步執行器


Quartz基礎結構
        Quartz對任務調度的領域問題進行了高度抽象,提出了調度器(Scheduler)、任務(Job)和觸發器(Trigger)這3個核心概念,並在Trigger觸發機制的基礎上使用org.quartz.Calendar進行定點(如假期)排除。
 
   
     定義任務調度需要以下幾個步驟:
  • 定義JobDetail實例對象,該對象需要指定名稱、組和Job接口的Class信息。
  • 定義Trigger實例對象,通過該對象設置觸發任務的相關信息,如起始時間、重復次數等。
  • 定義Schedule實例對象,通過ScheduleFactory工廠接口的實現類實例該對象。
  • 向Schedule中注冊JobDetail和Trigger,有兩種方式:
    • 通過Schedule的schedule方法注冊,此時它自動讓Trigger和JobDetail綁定。
    • 通過addJob和scheduleJob方法注冊,此時需要手動設置 Trigger的關聯的Job組名和Job名稱,讓Trigger和JobDetail綁定。
  • 啟動調度器(調用Schedule對象的start方法)。
Cron表達式
    Quartz使用Cron表達式定義時間規則,其中Cron表達式由6或7個空格分隔的時間字段組成。
  • * 表示所有值。
  • ? 表示未說明的值,即不關心它為何值。? 號只能用在日和周域上,為這兩域的其中一個指定了值,那就必須在另一個字值上放一個 ?。
  • - 表示一個指定的范圍;
  • , 表示附加一個可能值。
  • / 符號前表示開始時間,符號后表示每次遞增的值。
  • L 表示這個月最后一天。
  • W 用來描敘最接近指定天的工作日(周一到周五)。
  • # 用來指定這個月的第幾個周幾。
  • C 指和calendar聯系后計算過的值。
在Spring中使用Quartz
        在Spring中主要是通過配置bean的方式定義 ScheduleTriggerJobDetail三個主要實體。通過 JobDetailBean和  MethodInvokingJobDetailFactoryBean配置 JobDetail信息;通過 SimpleTriggerBeanCronTriggerBean配置 Trigger信息;通過 ScheduleFactoryBean配置Schedule信息。它們具體怎么配置參考源代碼的 setter方法。
 
Spring對JDK Timer的支持
        Spring提供了幾個JDK Timer的支持類,主要在以下方面對JDK Timer提供支持:
  •     ScheduledTimerTask,它對TimerTask提供封裝並提供相關的配置。
  •     通過MethodInvokingTimerTaskFactoryBean類可以將一個Bean的方法封裝為TimerTask。
  •     通過TimerFactoryBean可以方便地配置Timer,此外讓Timer的生命周期和Spring容器的生命周期相關,在初始化TimerFactoryBean后,啟動Timer,在Spring容器關閉前取消Timer
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM