zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    WCF 、Web API 、 WCF REST 和 Web Service 的区别
    BusyIndicator using MVVM 忙碌状态指示器的的实现
    复制文件夹的方法 .net
    SQL/LINQ/Lamda
    CSLA验证规则总结
    C++中GB2312字符串和UTF-8之间的转换
    如何用VC编写供PB调用的DLL
    【转】lucene4.3.0 配置与调试
    cygwin主要命令
    【转】eclipse中window->preference选项中没有tomcat的解决方法
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/6656950.html
Copyright © 2011-2022 走看看