快速业务通道

用Quartz进行作业调度 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
多方式可以操纵 SimpleTrigger。除了指定重复次数和重复间隔, 还可以指定作业在特定 日历时间执行,只需给定执行的最长时间或者优先级(稍后讨论)。执行的最长 时间可以覆盖指定的重复 次数,从而确保作业的运行不会超过最长时间。

用Quartz进行作业调度(3)

时间:2011-08-26 IBM Michael Lipton

示例 3: Cron 触发器

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 的一个示例。请注意 SchedulerFactory、 Scheduler 和 JobDetail 的 实例化,与 SimpleTrigger 示例中的实例化是相同的。在这个示例中,只是修改 了触发器。这里指定的 cron 表达式(“0/5 * * * * ?”)安排任务每 5 秒执行一次。

清单 3. CronTriggerRunner.java

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();      }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号