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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM