天天看點

定時任務

文法:秒 分 時 日 月 周 年(spring 不支援)

cron表達式是由6或7個由空格分隔的字段組成的字元串。字段可以包含任何允許的值,以及該字段允許的特殊字元的各種組合。字段如下所示

定時任務

cron trigger tutorial (quartz-scheduler.org)

*表示所有值:用于選擇字段中的所有值。例如,分鐘字段中的表示每分鐘

?表示沒有特定的值: 當你需要在允許字元的兩個字段中指定某一個字段,而不是另一個字段時很有用。例如,如果我想讓觸發器在一個月的某一天(比如10日)觸發,但不關心那是一周中的哪一天,那麼我将在month -of- day字段中輸入10

- 用于指定範圍:例如,小時字段中的10-12表示小時10、11和12。

, 用于指定附加值:例如,mon,wed,fri在星期字段中表示星期一、星期三和星期五。

/ 用于指定增量:例如,seconds字段中的“0/15”表示“秒0、15、30和45”。秒字段中的“5/15”表示“秒5、20、35和50”。你也可以在“字元”後面指定“/”——在這種情況下,相當于在“/”之前有“0”。“1/3”在month -of- day字段中的意思是“從每月的第一天開始,每3天開始一次”。

l (" last ") 在允許的兩個字段中都有不同的含義:例如,day-of-month字段中的值“l”表示“這個月的最後一天”——在非閏年中,1月的31天表示1月,2月的28天表示2月。如果在工作日字段中單獨使用,則表示“7”或“sat”。但是,如果在周中的一天字段中使用另一個值,則表示“這個月的最後xxx天”——例如,“6l”表示“這個月的最後一個星期五”。您還可以指定從一個月的最後一天開始的偏移量,例如“l-3”,這意味着月曆月的第三天到最後一天。

w (weekday) 用于指定離給定日期最近的工作日(周一至周五):例如,如果要指定15w作為month -of- day字段的值,則其含義是:一個月中離15号最近的工作日。是以如果15号是周六,觸發器就會在14号周五發射。如果15日是周日,觸發器将在16日星期一觸發。如果15号是星期二,那麼它就會在15号星期二發射。但是,如果您指定1w作為每月的日值,并且第1個是星期六,觸發器将在第3個星期一觸發,因為它不會跳過邊界

“l”和“w”字元也可以在month -of- day字段中組合成“lw”,即“這個月的最後一個工作日”

# 用于指定一個月的第n xxx天:例如,工作日字段中6#3的值表示這個月的第三個星期五(第6天=星期五,#3 =這個月的第三個星期五)。其他例子:2#1 =每月的第一個星期一,4#5 =每月的第五個星期三。請注意,如果您指定了#5,并且當月的每周沒有5天,那麼當月就不會生效。

合法字元以及月份和星期的名稱不區分大小寫。mon和mon是一個意思。

定時任務

利用spring自帶的定時任務

定時任務

spring中cron隻有6位,并且1-7代表周一到周七

定時任務預設是阻塞的,但是不應該阻塞,解決辦法

可以讓業務運作以異步的方式,自己送出到線程池

支援定時任務的線程池

讓定時任務異步執行

定時任務

使用異步+定時任務完成定時任務不阻塞的功能

繼續閱讀