@Scheduled注解-创新互联-成都快上网建站

@Scheduled注解-创新互联

1 概述

@Scheduled注解是spring boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行.注意需要配合@EnableScheduling使用,配置@Scheduled主要有三种配置执行时间的方式,cron,fixedRate,fixedDelay.

成都创新互联公司服务项目包括扬中网站建设、扬中网站制作、扬中网页制作以及扬中网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,扬中网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到扬中省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

2 cron

cron是@Scheduled的一个参数,是一个字符串,以5个空格隔开,只允许6个域(注意不是7个,7个直接会报错),分别表示秒,分,时,日,月,周.

单位 允许值 允许通配符
0-59, - * /
0-59, - * /
0-23, - * /
1-31, - * / ? L W
1-12 或 JAN-DEC(大小写均可), - * / ?
1-7 或 SUN-SAT(大小写均可), - * / ? L #

2.1 cron通配符

符号 含义
*所有值.在秒字段上表示每秒执行,在月字段上表示每月执行
?不指定值,不需要关系当前指定的字段的值,比如每天都执行但不需要关心周几,就可以把周的字段设为?
-区间,如秒的0-2,表示0秒,1秒,2秒都会触发
,多个值,比如在0秒,20秒,25秒触发,可以把秒的字段设为0,20,25
/递增触发,比如秒的字段上设0/3,从第0秒开始,每隔3秒触发
L最后,只允许在日字段或周字段上,在日字段上使用L表示当月最后一天,在周字段上使用3L表示该月最后一个周四
W只允许用在日字段上,表示距离最近的该日的工作日.工作日指的是周一至周五
#只允许在周字段上,表示每月的第几个周几,如2#3,每月的第3个周二

2.2 cron示例

@Scheduled(cron = "0 * * * 1 SAT") //每年的1月的所有周六的所有0秒时间执行
@Scheduled(cron = "0 0 0 1 Jan ?") //每年的1月的1日的0时0分0秒执行

cron支持占位符,若在配置文件中有

cron = 2 2 2 2 2 ?

@Scheduled(cron = "${cron}")

表示每年的二月二号的两时两分两秒执行.

3 fixedRate

3.1 fixedRate

fixedRate表示自上一次执行时间之后多长时间执行,以ms为单位.

@Scheduled(fixedRate = 1000 * 5)

自上次执行之后5秒再执行.

3.2 fixedRateString

有一个类似的参数叫fixedRateString,是字符串的形式,支持占位符.

@Scheduled(fixedRateString = "1000")

自上次执行1秒再执行.
若在配置文件中有相应的属性,可以用占位符获取属性,如在application.properties中有

interval=2000

可以使用

@Scheduled(fixedRateStirng="${interval}")

表示2秒间隔.

4 fixedDelay

4.1 fixedDelay

fixedDelay与fixedRate有点类似,不过fixedRate是上一次开始之后计时,fixedDelay是上一次结束之后计时,也就是说,fixedDelay表示上一次执行完毕之后多长时间执行,单位也是ms.

@Scheduled(fixedDelay = 1000 * 3600 * 12) //上一次执行完毕后半天后再次执行

4.2 fixedDelayString

与fixedRateString类似,也是支持占位符

@Scheduled(fixedDelayString = "${fixedDelay}")

5 initialDelay

5.1 initialDelay

initialDelay表示首次延迟多长时间后执行,单位ms,之后按照cron/fixedRate/fixedRateString/fixedDelay/fixedDelayString指定的规则执行,需要指定其中一个规则.

@Scheduled(initialDelay=1000,fixedRate=1000) //首次运行延迟1s

5.2 initialDelayString

与initialDelay类似,不过是字符串,支持占位符.

@Scheduled(initialDelayString = "${initialDelay}",cron = "0 0 0 14 4 ?") 
//按照配置文件initialDelay指定的时间首次延迟,并于每年4月14日0时0分0秒执行

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站题目:@Scheduled注解-创新互联
分享地址:http://kswjz.com/article/ceejhd.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流