Java 中Quartz应用 (2)

来源:互联网 发布:mac vmware 安装win7 编辑:程序博客网 时间:2024/04/30 12:43

quartz中的CronTrigger是仿照Unix的Crontab的定时任务,进行任务启动的。

CronTrigger配置格式:
序号: 说明           是否为必填           允许填写值                            允许的通配符
 1.     秒                  是                          0-59                 , - * /
 2.     分                  是                          0-59                 , - * /
 3.     时                  是                          0-23                 , - * /
 4.     日                  是                          1-31                 , - * ? / L W
 5.     月                  是                          1-12 or JAN-DEC      , - * /
 6.     周                  是                          1-7 or SUN-SAT       , - * ? / L W
 7.     年                  否                         empty or 1970-2099    , -* /
 
通配符的说明:
 *  表示所有值。
 ?   表示不定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为 0 0 0 10 * ?
 -  表示区间 。例如在小时上设置"10-12",表示10,11,12点都会触发
 ,   表示指定多个值,例如在周字段设置 "MON,WED,FRI",表示周一,周三和周五触发。
 /  表示用于递增触发。如在秒上面设置"5/15",表示从5秒开始,每增15秒触发(5,20,35,50)
 L  表示最后的意思。在日字段设置上,表示当月的最后一天,在周字段上表示星期六,相当于7或SAT。如果在L前加上数字,
    则表示该数据的最后一个。例如在周字段上设置“6L”这样的格式,则表示“本月最后一个星期五”
 W  表示离指定日期最近的那个工作日(周一至周五),例如在日字段上设置“15W”,表示离每月15号最近的那个工作日触发。如果15号是周六,
    则找最近的周五(14号触发),如果15号是周末,则找最近的下周一(16号)触发。如果15号正好是工作日,则当天触发。
    注意:如果指定的格式为“1W”,则表示每月的1号往后的最近工作日触发。如果1号是周六,则将在3号(下周一)触发。
 # 序号  表示每月的第几个周几,例如在周字段上设置“6#3”表示在每月的第三个周六。注意如果指定“6#5”正好第五周没有周六,则不会触发该配置。
提示:
     “L”和“W”可以组合使用。如果在日字段上设置“LW”,则表示在本月的最后一个工作日触发(一般指发工资);
     周字段的设置,若使用英文字母是不缺分大小写的。

 CronTrigger样例使用:

public class QuartzTest implements Job {
   
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("任务执行开始");
    }
    public void task() throws ParseException{
        SchedulerFactory   schedulerFactory  = new StdSchedulerFactory();
        Scheduler   scheduler  =  schedulerFactory.getScheduler();
        JobDetail jobDetail = new JobDetail("jobdetail1","defaultgroup",this.getClass());
       
        CronTigger cronTrigger = new CronTrigger("cron1","defaultgroup");
        CronExpression cexp = new CronExpression("0/1 * * * * ?");
        cronTrigger.setCronExpression(cexp);          
        scheduler .scheduleJob(jobDetail,simpleTrigger);
        scheduler .start();
    }
}

原创粉丝点击