quartz中的job 的具體說明:
job是一個接口,只有一個方法void execute(JobExecutionContext context),開發者實現該接口定義運行任務,JobExecutionContext類提供了調度上下文的各種信息。Job運行時的信息保存在JobDataMap實例中;
job可分爲無狀態和有狀態的job。它們之間的重大區別就是:兩個或多個有狀態的 JobDetail 實例不能併發執行。說的是你創建並註冊了一個有狀態 JobDetail 到 Scheduler 上。你還建立了兩個 Trigger 來觸發這個 Job:一個每五分鐘觸發,另一個也是每五分釧觸發。假如這兩個 Trigger 試圖在同一時刻觸發 Job,框架是不允許這種事情發生的。第二個 Trigger 一直會被阻塞直到第一個結束。
//創建相關的job信息
JobDetail job = newJob(HelloJobZ.class)
.withIdentity("jobtest1", "grouptest1")
.build();
trigger
trigger用來設置job的執行時間,執行頻率。job只是執行的任務,根據trigger設置的頻率,時間來執行job。trigger可分CronTrigger 和 SimpleTrigger 。SimpleTrigger裏面提供一些方法,可以按間隔時間執行。個人認爲,CronTrigger比較靈活一些,可以更方便的設置執行的時間和頻率。
例如:
//創建一個觸發器的名稱
CronTrigger trigger = newTrigger()
.withIdentity("triggertest1", "grouptest1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.startNow()
.build();