正如上篇文章所說的,Job很容易實現,只需要接口中唯一的execute方法。除此之外,你還需要稍微了解下Job、execute、Job interface和JobDetail的一些東西。
當你寫的Job類執行特定任務時,Quartz需要知道這個類應該具有的各種屬性。這就是前面所提到的JobDetail類完成的。
JobDetail實例是由JobBuilder創建的,可以這樣引入:import static org.quartz.JobBuilder.*;
讓我們花一點時間來看看Job的原理和Quartz中Job的生命周期。首先看一下在第一篇文章中提及的一塊代碼片段:// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
.withIdentity("myJob", "group1") // name "myJob", group "group1"
.build();
// Trigger the job to run now, and then every 40 seconds
Trigger trigger = newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
// Tell quartz to schedule the job using our trigger
sched.scheduleJob(job, trigger);
HelloJob的定義如下:public class HelloJob implements Job {
public HelloJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException
{
System.err.println("Hello! HelloJob is executing.");
}
}
注意傳給scheduler的是一個JobDetail的實例,僅僅通過在創建JobDetail是指定了Job class,它就知道知道所執行的任務類型。每當scheduler執行任務的時候,總是創建一個新的類實例,在執行其execute方法。執行完畢后,會釋放對該實例的引用,稍后將會被