至此我們已決定Trigger,可以開(kāi)始調(diào)度工作了?瓷先ヒ磺卸家淹瓿,但實(shí)際上我們只是調(diào)度了一項(xiàng)任務(wù),還有最重要的一步有待完成。注意HelloWorld.class作為參數(shù)傳遞給了JobDetail的構(gòu)造函數(shù)。這個(gè)類就是實(shí)際完成工作的地方。HelloWorld繼承了Quartz的Job類,并覆蓋了execute()方法。當(dāng)任務(wù)管理器決定運(yùn)行這個(gè)任務(wù)時(shí),execute()方法將被調(diào)用。來(lái)看代碼:
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
//每個(gè)Job都有獨(dú)立的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
//每個(gè)Job都有一個(gè)Job Data map來(lái)存放額外的信息
JobDataMap dataMap = jobDetail.getJobDataMap();
System.out.println("Hello World!!!");
}
}
出于測(cè)試的目的,你可能希望將觸發(fā)器的頻率調(diào)的高一點(diǎn),以便觀察到HelloWorld的動(dòng)作。畢竟,你不想一直等到凌晨2點(diǎn)才能確定調(diào)度的任務(wù)確實(shí)運(yùn)行了。相反,你可能需要一個(gè)每隔10秒運(yùn)行的觸發(fā)器:
Trigger trigger = new SimpleTrigger("trigger1", "group1");
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
trigger.setRepeatInterval(10000L); // milliseconds毫秒
注意,這個(gè)觸發(fā)器沒(méi)有使用類cron的語(yǔ)法。Quartz有大量各類的選項(xiàng)和配置方法,可適用于任何任務(wù)調(diào)度的需要。
其它計(jì)時(shí)方式的配置
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)Java經(jīng)典算法大全匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |