Java框架Quartz中API、Jobs和Trigger詳解
Quartz API
Quartz API的關鍵接口是:
- Scheduler - 與調度程序交互的主要API。
- Job - 你想要調度器執(zhí)行的任務組件需要實現的接口
- JobDetail - 用于定義作業(yè)的實例。
- Trigger(即觸發(fā)器) - 定義執(zhí)行給定作業(yè)的計劃的組件。
- JobBuilder - 用于定義/構建 JobDetail 實例,用于定義作業(yè)的實例。
- TriggerBuilder - 用于定義/構建觸發(fā)器實例。
- Scheduler 的生命期,從 SchedulerFactory 創(chuàng)建它時開始,到 Scheduler 調用shutdown() 方法時結束;Scheduler 被創(chuàng)建后,可以增加、刪除和列舉 Job 和 Trigger,以及執(zhí)行其它與調度相關的操作(如暫停 Trigger)。但是,Scheduler 只有在調用 start() 方法后,才會真正地觸發(fā) trigger(即執(zhí)行 job)
Job 和 Trigger
一個 job 就是一個實現了 Job 接口的類,該接口只有一個方法:
Job 接口:
package org.quartz;
public interface Job {
public void execute(JobExecutionContext context)
throws JobExecutionException;
}
job的一個 trigger 被觸發(fā)后,execute() 方法會被 scheduler 的一個工作線程調用;傳遞給 execute() 方法的 JobExecutionContext 對象中保存著該 job 運行時的一些信息 ,執(zhí)行 job 的 scheduler 的引用,觸發(fā) job 的 trigger 的引用,JobDetail 對象引用,以及一些其它信息。
JobDetail 對象是在將 job 加入 scheduler 時,由客戶端程序(你的程序)創(chuàng)建的。它包含 job 的各種屬性設置,以及用于存儲 job 實例狀態(tài)信息的 JobDataMap。
Trigger 用于觸發(fā) Job 的執(zhí)行。當你準備調度一個 job 時,你創(chuàng)建一個 Trigger 的實例,然后設置調度相關的屬性。Trigger 也有一個相關聯的 JobDataMap,用于給 Job 傳遞一些觸發(fā)相關的參數。Quartz 自帶了各種不同類型的 Trigger,最常用的主要是 SimpleTrigger 和 CronTrigger。
SimpleTrigger 主要用于一次性執(zhí)行的 Job(只在某個特定的時間點執(zhí)行一次),或者 Job 在特定的時間點執(zhí)行,重復執(zhí)行 N 次,每次執(zhí)行間隔T個時間單位。CronTrigger 在基于日歷的調度上非常有用,如“每個星期五的正午”,或者“每月的第十天的上午 10:15”等。
為什么既有 Job,又有 Trigger 呢?
例如,Job 被創(chuàng)建后,可以保存在 Scheduler 中,與 Trigger 是獨立的,同一個 Job可以有多個 Trigger;
這種松耦合的另一個好處是,當與 Scheduler 中的 Job 關聯的 trigger 都過期時,可以配置 Job 稍后被重新調度,而不用重新定義 Job;
還有,可以修改或者替換 Trigger,而不用重新定義與之關聯的 Job。
Key
將 Job 和 Trigger 注冊到 Scheduler 時,可以為它們設置 key,配置其身份屬性。
Job 和 Trigger 的 key(JobKey 和 TriggerKey)可以用于將 Job 和 Trigger 放到不同的分組(group)里,然后基于分組進行操作。
同一個分組下的 Job 或 Trigger 的名稱必須唯一,即一個 Job 或 Trigger 的 key 由名稱(name)和分組(group)組成。
到此這篇關于Java框架Quartz中API、Jobs和Trigger詳解的文章就介紹到這了,更多相關Quartz的API、Jobs和Trigger內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springmvc項目使用@Valid+BindingResult遇到的問題
這篇文章主要介紹了springmvc項目使用@Valid+BindingResult遇到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
基于Spring Security的Oauth2授權實現方法
這篇文章主要介紹了基于Spring Security的Oauth2授權實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09

