博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz Cron 触发器
阅读量:4196 次
发布时间:2019-05-26

本文共 1971 字,大约阅读时间需要 6 分钟。

CronTrigger 支持比 SimpleTrigger 更具体的调度,而且也不是很复杂。基于 cron 表达式,CronTrigger 支持类似日历的重复间隔,而不是单一的时间间隔 —— 这相对 SimpleTrigger 而言是一大改进。

Cron 表达式包括以下 7 个字段:

  • 小时
  • 月内日期
  • 周内日期
  • 年(可选字段)

Cron 触发器利用一系列特殊字符,如下所示:

  • 反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
  • 问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
  • 在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
  • 井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
  • 星号(*)字符是通配字符,表示该字段可以接受任何可能的值。

所有这些定义看起来可能有些吓人,但是只要几分钟练习之后,cron 表达式就会显得十分简单。

清单 3 显示了 CronTrigger 的一个示例。请注意 SchedulerFactoryScheduler 和 JobDetail 的实例化,与 SimpleTrigger 示例中的实例化是相同的。在这个示例中,只是修改了触发器。这里指定的 cron 表达式(“0/5 * * * * ?”)安排任务每 5 秒执行一次。



public void task() throws SchedulerException    {        // Initiate a Schedule Factory        SchedulerFactory schedulerFactory = new StdSchedulerFactory();        // Retrieve a scheduler from schedule factory        Scheduler scheduler = schedulerFactory.getScheduler();                // current time        long ctime = System.currentTimeMillis();                 // Initiate JobDetail with job name, job group, and executable job class        JobDetail jobDetail =         	new JobDetail("jobDetail2", "jobDetailGroup2", SimpleQuartzJob.class);        // Initiate CronTrigger with its name and group name        CronTrigger cronTrigger = new CronTrigger("cronTrigger", "triggerGroup2");        try {            // setup CronExpression            CronExpression cexp = new CronExpression("0/5 * * * * ?");            // Assign the CronExpression to CronTrigger            cronTrigger.setCronExpression(cexp);        } catch (Exception e) {            e.printStackTrace();        }        // schedule a job with JobDetail and Trigger        scheduler.scheduleJob(jobDetail, cronTrigger);                // start the scheduler        scheduler.start();    }

转载地址:http://ggzli.baihongyu.com/

你可能感兴趣的文章
JSP自定义标签rtexprvalue属性
查看>>
RMI原理及实现
查看>>
解决Tomcat Error listenerStart 问题
查看>>
Hibernate重要对象的详解
查看>>
Struts2 配置文件手册
查看>>
Spring AOP 实例
查看>>
JAVA分页显示(程序分页和物理分页)
查看>>
Hibernate复合主键
查看>>
JQuery推荐插件(200+)
查看>>
自己实现事件监听
查看>>
高效实现数据仓库的七个步骤
查看>>
数据仓库开发过程中的七个禁忌
查看>>
顺利开发数据仓库的七种思路
查看>>
MySQL中文参考手册
查看>>
什么是ARP?如何防范ARP欺骗?
查看>>
Struts2获得Session和Request对象
查看>>
IE 模态对话框
查看>>
jQuery对象和DOM对象相互转化
查看>>
Js获取HTML DOM节点元素
查看>>
JSP基础--J2EE赢在起跑线
查看>>