为什么80%的码农都做不了架构师?>>>
1 介绍 cron是已经存在了很长时间UNIX工具,因此它的调度能力是强大的并久经考验。CronTrigger类基于cron的调度能力。 CronTrigger使用“cron表达式”,能够创建触发调度,例如,“在每个星期一到星期五早上8点”或“在每月最后一个星期五的1点半”。 Cron表达式时强大的,但可能会非常混乱。该教程致力于带有一些神秘感创建一个Cron表达式。 2 格式一个Cron表到时是一个由6或7个字段通过空格分隔的字符串。字段能包含任意允许的值,连同允许特定字符字段的各种组合。字段描述如下表所示:
因此Cron表达式最简单的情况是:* * * * ? *。 或更复杂,像0/5 14,18,3-39,52 * ? JAN.MAR,SEP,SEP MON-FRI 2002-2010。 3 特殊字符1)*(任意值):用于选择一个字段中的所有值。例如,*在分钟字段意味着每分钟。 2)?(没有指定值):当你指定两个字段的字符是允许的,而不是其他时是有用的。例如,如果我想让我的触发器在月中的某一天触发,但不关心那个星期会发生,我可以放置10在day-of-month字段,和?在day-of-week字段。 3)-:用于指定范围。例如“10-12”在hour字段意味着10、11、12小时。 4),:用于指定额外值。例如“MON,WED,FRI”在day-of-week字段意味着星期一、星期三、星期五。 5)/:用于指定增量。例如,“0/15”在seconds字段意味着“0、15、30、45秒”。“5/15”在seconds秒意味着“5、20、35、50秒”。你也能在“字符——在这种情况下”后面指定“/”等价于“/”前面有0。“1/3”在day-of-month字段意味着“从每月的第一天开始没3天出发一次”。 6)L(“last”):在两个允许的字段中有不同的意义。例如,“L”在day-of-month字段上意味着“每月的最后一天”——1月31号、闰年2月28号。如果使用在day-of-week上,它仅意味着“7”或“SAT”。但如果用于day-of-week字段的其他值后面,它意味着“这个月的最后的星期几”——例如“6L”意味着“月的最后一个星期五”。你也能指定指定从月的最后一天的位移,例如“L-3”意味着每月的倒数第三天。当使用L可选项时,重要的是不要指定列表,或值的范围,你会困惑/意想不到的结果。 7)W(“工作日”):用于指定工作日(星期一至星期五)最近的一天。例如,如果你指定“15W”作为day-of-month字段的值,意味着:“距离本月15号最近的工作日”。因此,如果15号是星期六,触发器将在14号的星期五触发。如果15号是星期天,触发器将在星期一的16号触发。如果15号是星期二,那么它将在15号的星期二触发。然后如果你指定“1W”作为day-of-month,而1号是星期六,触发器将在3号的星期一触发,因为他不会跨越月的天数的边界。W字符只能指定day-of-month的一天,不是一个范围或天的列表。L和W字符也可以在day-of-month字段联合使用,LW表示每月的最后一个工作日。 8)#:表示每月的第几个星期几。例如,“6#3”在day-of-week字段上表示每月的第三个星期五。(day 6=星期五而#3=每月的第几个)。另一个例子:“2#1”=每月的第一个星期一。注意,如果你指定“#5”而在day-of-week上的没有第5个,那么不会触发。合法字符和月和每周的第几天的名字不区分大小写。MON和mon相同。 | ||||||||||||||||||||||||||||||||