核心代碼如下:
public class SchedulerTest { public static void main(String[] args) { //創建schedulerFactory類 SchedulerFactory schedulerfactory=new StdSchedulerFactory(); Scheduler scheduler=null; try{ //第一步:通過schedulerFactory獲取一個調度器 scheduler=schedulerfactory.getScheduler(); //第二步:創建jobDetail實例,綁定Job實現類 //指明job的名稱,所在組的名稱,以及綁定job類--這里是要定時執行的那個類,需要實現org.quartz.Job接口 JobDetail job=JobBuilder.newJob(MyJob.class)
.withIdentity("job1", "jgroup1").build(); //第三步:定義調度觸發規則: //規則一:使用simpleTrigger規則--一般用於循環執行 /* Trigger trigger=TriggerBuilder.newTrigger()
.withIdentity("simpleTrigger", "triggerGroup")
//間隔時間 .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1)
.withRepeatCount(8)) //運行次數 .startNow().build(); */ //規則二:使用cornTrigger規則 每天10點42分 --一般由用於定時執行 Trigger trigger=TriggerBuilder.newTrigger()
.withIdentity("simpleTrigger", "triggerGroup")
//這個規則下面解釋 .withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *")) .startNow().build(); //第四步:把作業和觸發器注冊到任務調度中 scheduler.scheduleJob(job, trigger); //最后第五步:啟動調度 scheduler.start(); }catch(Exception e){ e.printStackTrace(); } } }
規則一:使用simpleTrigger的詳解
規則一用的是SimpleScheduleBuilder去設置,主要設置2個參數間隔時間和運行次數
1.間隔時間的設置方法如下:
可以按照毫秒,秒 ,分鍾,小時去配置;
2.運行次數的設置方法如下:
withRepeatCount()設置任務需要執行的總次數。
下邊那個repeatForever()這個方法單獨說一下,這個方法會把repeatCount設置為-1,意思是一致循環下去。
3.間隔時間和運行次數一起設置:
這些方法看方法名字差不多就知道什么意思了,比如repeatMinutelyForever(10) 每隔10分鍾,一致循環執行下去。
這些方法內部基本調用的是前面2個方法,具體解釋點進去看注釋吧。
規則二:使用cornTrigger的詳解
字段 允許值 允許的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可選) 留空, 1970-2099 , - * /
特殊字符解釋:
* 表示所有值;
? 表示未說明的值,即不關心它為何值;
- 表示一個指定的范圍;
, 表示附加一個可能值;
/ 符號前表示開始時間,符號后表示每次遞增的值;
表達式 意義
"0 0 12 * * ?" 每天12點觸發
--------這三個設置一樣的---------------
"0 15 10 ? * *" 每天10:15觸發
"0 15 10 * * ?" 每天10:15觸發
"0 15 10 * * ? *" 每天10:15觸發
0 08 * * * ? 每個小時08分鍾的時候觸發一次
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發
"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鍾觸發
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鍾觸發
"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鍾觸發
"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鍾觸發
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發
"0 15 10 15 * ?" 每月15日上午10:15觸發
"0 15 10 L * ?" 每月最后一日的上午10:15觸發
"0 15 10 ? * 6L" 每月的最后一個星期五上午10:15觸發
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發
maven 配置
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
參考文章:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471