概述
cron是一个历史悠久的unix工具,它的调度能力无疑是很强的。CronTrigger类就是基于cron的调度能力。
Cron Trigger使用cron表达式,可以创建诸如“周一到周五的上午八点”或者“每个月最后一个周五的下午三点”之类的调度设置。
cron表达式很强大,但也会让人迷惑。本文旨在为创建cron表达式解惑,在用户不得不向论坛或者通过邮件向别人求助之前,提供些许帮助。
cron表达式是一个字符串,由6-7个字段组成,字段中间用空格隔开。每个字段可以包含以下值(或者值的组合):
所以cron表达式可以简单的例如:* * * * ? *
也可以复杂的诸如:0/5 14,18.3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010
特殊字符
* 表示字段范围内的所有值,例如分钟字段上的*表示每分钟;
? 表示不指定的随意值,通常用在一组限制中不限制的那个字段。例如配置每个月10号(并不在意是周几)执行的调度,在【Day of month】字段配置10,【Day of week】字段配置? 即可;
- 表示范围;
/ 表示依次递增,例如秒字段“0/15”表示从来0秒开始,每15秒调度,即0、15、30、45秒都调度;
L 表示最后一个,在不同的字段上有不同的含义。例如在【Day of month】上的L表示每个自然月的最后一天;在【Day of week】上如果单独使用,表示周日,但是如果用在另一个值之后,例如6L,则表示每个月的最后一个周六;也可以在L的基础上设置一个偏移量,例如L-3在【Day of month】就表示每个月的倒数第三天。使用L的时候,尽量不用要列举值、范围值,不然会出现意想不到的结果;
W 表示工作日,表示离指定日期最近的一个工作日。例如“15W”在【Day of month】表示离15号最近的一个工作日,如果15号是工作日,那么就是15号,如果15号是周六,那么15W就会取值14,如果15号是周日,那么15W就会取值16。但这里有一个例外,就是这里的浮动不会跨月,例如1号是周六,那么1W就不会取值上个月的最后一天,而是会在当月取值3号;
# 表示每个月的第几个周几。例如“6#3”表示第三个周五(注意,周日是每周的第一天,所以6表示周五)。当然如果配置5#,而没有第五个周几,那么调度永远也不会启动的;
这里有一些例子:
原文:
http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/crontrigger.html
最后
以上就是传统树叶为你收集整理的[译]Java定时任务调度-Quartz Cron 调度的全部内容,希望文章能够帮你解决[译]Java定时任务调度-Quartz Cron 调度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复