Quartz中我们可以用cornExpression来定义一个job的执行计划,与unix中的cron非常相似,不过Quartz中的cornExpression可以支持到秒,这比unix中支持的分钟级调度要精确的多。

用一个表格来表示cornExpression中支持的7个域

CornExpression

字段名 必须 允许值 特殊值
Y 0-59 , - * /
Y 0-59 , - * /
Y 0-23 , - * /
Y 1-31 , - * ? / L W
Y 1-12 /JAN-DEC , - * /
Y SUN-SAT , - * ? / L #
N 1970-2099 , - * /

允许值都很好理解,下面来说说特殊值的含义

  • “ , ”:用“,”来分隔几个不连续的允许值,例如“1,3,5”或者“SUN,WED”等等。
  • “ * ”:意味着可以在这一域上使用任意一个允许值。
  • “ - ”:用“-”来确定一个范围比如“5-9”表示5到9之间的所有值,包括5和9。
  • “ ? ”:在日和周这两个域可以用,表示没有特定值。
  • “ / ”:这个符号是用来表示增量的,例如“0/15”表示从0开始每增加15个“域的单位”调度一次任务
  • “ L ”:这个用在日和周里面,用在日上时,表示在当月最后一天触发,用在周上时表示周的最后一天,这里需要注意星期六是最后一天,很多人会在周六周天这个问题上犯错误。
  • “ W ”:W在日域,表示工作日,周一到周五。
  • “ # ”:用在周域里面,表示允许的月份中第几周的哪一天。“1#2“表示在第二周的第一天(周天)触发任务。

结合几个例子来讲讲具体怎么用吧。

  • ”* * * ? * * “ : 每分每秒都会触发一个任务的执行
  • “0 0 0 ? * * “ : 每天的0点0分0秒触发一次任务
  • “0 0/30 12-14 ? * *” : 每天的12到14点开始每隔30分钟触发一次任务
  • “30 * 10,15,20 W 1-6 * *” : 从一月到6月每个工作日的10点00分30秒,15点00分30秒,20点00分30秒触发一次任务
  • ”* * 0/2 * * 3#2 *” : 每个月的第二周的第三天从0点开始,每隔2小时触发一次任务

现在差不多已经掌握Quartz中cornExpression的用法了吧?

试试这个表达式 “20-40 * 12,14,16,18 W 3-9 L *“ 表示什么意思吧。。

SOLID设计原则

无论是24种常用设计模式,还是1000种设计方法,他们都是这SOLID五大设计原则的具体表现... Continue reading

设计模式--装饰模式

Published on May 04, 2015

设计模式--策略模式

Published on April 29, 2015