至此我們已決定Trigger,可以開始調(diào)度工作了?瓷先ヒ磺卸家淹瓿,但實際上我們只是調(diào)度了一項任務(wù),還有最重要的一步有待完成。注意HelloWorld.class作為參數(shù)傳遞給了JobDetail的構(gòu)造函數(shù)。這個類就是實際完成工作的地方。HelloWorld繼承了Quartz的Job類,并覆蓋了execute()方法。當(dāng)任務(wù)管理器決定運行這個任務(wù)時,execute()方法將被調(diào)用。來看代碼:
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
//extend the proper Quartz class
//繼承適當(dāng)?shù)腝uartz類
public class HelloWorld extends Job {
//override the execute method
//覆蓋execute方法
public void execute(JobExecutionContext context) {
// Every job has it's own job detail
//每個Job都有獨立的JobDetail
JobDetail jobDetail = context.getJobDetail();
// The name is defined in the job definition
//name在Job定義中指定
String jobName = jobDetail.getName();
//Every job has a Job Data map for storing extra information
//每個Job都有一個Job Data map來存放額外的信息
JobDataMap dataMap = jobDetail.getJobDataMap();
System.out.println("Hello World!!!");
}
}
出于測試的目的,你可能希望將觸發(fā)器的頻率調(diào)的高一點,以便觀察到HelloWorld的動作。畢竟,你不想一直等到凌晨2點才能確定調(diào)度的任務(wù)確實運行了。相反,你可能需要一個每隔10秒運行的觸發(fā)器:
Trigger trigger = new SimpleTrigger("trigger1", "group1");
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
trigger.setRepeatInterval(10000L); // milliseconds毫秒
注意,這個觸發(fā)器沒有使用類cron的語法。Quartz有大量各類的選項和配置方法,可適用于任何任務(wù)調(diào)度的需要。
其它計時方式的配置
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |