java quartz2.1_quartz 2.1学习(一)
quartz是一種開源任務調度框架,提供了強大的任務調度機制,Quartz允許開發人員靈活地定義觸發器的調度時間表,并可對觸發器和任務進行關聯映射。廢話不多說了,介紹一下編程的基本步驟:
實現Job接口,編碼實現需要執行的任務。
定義jobdetail對象,這個對象需要job實現類作為參數
定義trigger,trigger就是一個時間表,定義什么時候來執行任務,主要分為simpletrigger和crontrigger兩個子類,前者適用于簡單情況:只執行一次或者固定間隔執行;后者使用表達式來靈活調度任務的執行。
定義schedulefactory實例,從schedulefactory工廠中獲取schedule對象。schedule就像一個容器,里面放入任務和時間表,將某個任務和某個時間表綁定,就可以讓任務按照指定的時間執行。其實schedule就是一個線程池。
下面是個例子:
package quartz;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Copyright
*
Program Name:TestJavaProject
*
Comments:
*
JDK version used:
*
Create Date:2013-7-17
* @author LA
* @version
*/
public class SimpleJob implements Job{
private Logger logger=LoggerFactory.getLogger(SimpleJob.class);
@Override
public void execute(JobExecutionContext jobCtx) throws JobExecutionException {
System.out.println("I can count to 10->");
//輸出1-10
for(int i=1;i<=10;i++){
System.out.println(" | "+i+" ");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO: handle exception
}
}
System.out.println("
JobDataMap properties=jobCtx.getJobDetail().getJobDataMap();
System.out.println("Previous fire time: "+jobCtx.getPreviousFireTime());
System.out.println("curent file time: "+jobCtx.getFireTime());
System.out.println("next fire time: "+jobCtx.getNextFireTime());
}
}
package quartz;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
/**
* Copyright
*
Program Name:TestJavaProject
*
Comments:
*
JDK version used:
*
Create Date:2013-7-17
* @author LA
* @version
*/
public class CronTriggerRunner {
/**
* @param args
*/
public static void main(String[] args) {
try {
JobDetail jobDetail=JobBuilder.newJob(SimpleJob.class).withIdentity("myjob", "job-group").build();
CronTrigger cronTrigger=TriggerBuilder.newTrigger().withIdentity("cronTrigger", "trigger-group").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
SchedulerFactory sFactory=new StdSchedulerFactory();
Scheduler scheduler=sFactory.getScheduler();
scheduler.scheduleJob(jobDetail, cronTrigger);
scheduler.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
其中定義crontrigger對象時,使用“0/5 * * * * ?”來表示執行的時間表,意思是從0s開始,每隔5秒執行一次,每分每時每天每月。其中0/5的意思是:從0開始,每隔5,即0,5,10.。。。;“*”表示通配,“?”表示占位,沒有意義。更多的表達式寫法可以查閱相關資料
總結
以上是生活随笔為你收集整理的java quartz2.1_quartz 2.1学习(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络主观论述题,《计算机网络》论述
- 下一篇: 未定义变量: data_三、变量声明