java 調度框架quartz

 

核心代碼以下:                      

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個參數間隔時間運行次數maven

1.間隔時間的設置方法以下:ui

能夠按照毫秒,秒 ,分鐘,小時去配置;spa

2.運行次數的設置方法以下:.net

withRepeatCount()設置任務須要執行的總次數。3d

下邊那個repeatForever()這個方法單獨說一下,這個方法會把repeatCount設置爲-1,意思是一致循環下去。code

3.間隔時間和運行次數一塊兒設置:blog

這些方法看方法名字差很少就知道什麼意思了,好比repeatMinutelyForever(10) 每隔10分鐘,一致循環執行下去。接口

這些方法內部基本調用的是前面2個方法,具體解釋點進去看註釋吧。get

 

規則二:使用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>it

 

參考文章:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471

相關文章
相關標籤/搜索