java 定时任务 @Scheduled

目录

1、作用

2、前提

2、关于表达式:

2.1、cron

2.1、语法

 2.2、案例

3、表达式生成的网站


1、作用

定义在方法上,让方法按照表达式约束的时间自动触发

2、前提

     1.1、需搭建好spring环境

     1.2、使用的时候,将其注解带上表达式写在方法上,注意类上也是需要注解的(@Service/@Component)


public class ScheduleTest{
    // 每隔1s执行一次
    @Scheduled(fixedDelay = 1000)
    public void yzEventProcess() {
       
    }
    // 从0秒开始,每隔5分钟执行一次
    @Scheduled(cron = "0 */5 * * * ? ")
    public void yzEventProcess() {
       
    }
}

2、关于表达式:

2.1、cron

2.1、语法

Cron表达式由6或7个空格分隔的时间字段组成:

[秒] [分钟] [小时] [日期] [月份] [星期] [年{可选}]

字段允许值允许的特殊字符特殊字符说明
秒      0-59     , - * /

【,】表示不连续的值,如“0,5,10”--》意味着0秒,5秒,10秒的时间

【-】表示连续的值,如“0-5”-》意味着0秒,1秒,2秒,3秒,4秒,5秒的时间

【*】表示任意值,如:*每秒钟

【/】表示字符用于指定增量,如:“0/5”-》每隔5秒

分  

0-59, - * / 

【,】表示不连续的值

【-】表示连续的值

【*】表示任意值

【/】表示字符用于指定增量。 

小时0-23, - * / 

【,】表示不连续的值

【-】表示连续的值

【*】表示任意值

【/】表示字符用于指定增量。 

日期 1-31, - * ? / L W C 

【,】表示不连续的值

【-】表示连续的值

【*】表示任意值

【?】表示任意值,被用于天(月)和天(星期)两个子表达式,表示不指定值;当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

【/】表示字符用于指定增量。 

【L】是‘last’的省略写法,可以表示day-of-month和day-of-week,day-of- month域中表示一个月的最后一天

【W】字符只允许日期域出现,表示与指定日期最近的工作日,如15w,如果15号刚好是星期日,那么这个任务会在16号触发;如果15号是星期六则14号触发;如果15号是星期一~星期五之间则15号触发

     “L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日。

     只能单个数字使用,不能在区域里面使用

【C】允许在日期域和星期域出现

月份    1-12, - * / 

【,】表示不连续的值

【-】表示连续的值

【*】表示任意值

【/】表示字符用于指定增量。 

星期1-7, - * ? / L C # 

【,】表示不连续的值

【-】表示连续的值

【*】表示任意值

【/】表示字符用于指定增量。 

【L】是‘last’的省略写法可以表示day-of-month和day-of-week域,day-of-week域表示‘7’或者‘SAT’

【C】允许在日期域和星期域出现

【#】只允许在星期域中出现,用于确定第几个星期的星期就,如6#3,每个月的第三个星期的星期五

【?】表示任意值

年{可选}1970-2099, - * /

【,】表示不连续的值

【-】表示连续的值

【*】表示任意值

【/】表示字符用于指定增量。 

 2.2、案例

表达式说明
0 */5 * * * ?从0秒开始,每隔5分钟(也就是每个小时都会重新开始)
0 0 * * * ?每隔1小时执行一次
0 0 */2 * * ?"每隔2小时执行一次
0 0 10,14,16 * * ?       每天的10点,14点,16点触发
0 0/30 9-17 * * ?每天的9点-17点,每隔30分钟触发 
0 0 12 ? * WED每周三的12点触发
0 0 12 * * ?每天12点触发
0 15 10 ? * *  、  0 15 10 * * ?   、 0 15 10 * * ? *每天的10:15触发
0 15 10 * * ? 20052005年的每天10:15触发
0 * 14 * * ?每天14:00-14:59每分钟触发一次
0 0/5 14 * * ?每天14:00-14:59,每隔5分钟触发一次
0 0-5 14 * * ?每天14:00-14:05,每隔1分钟触发一次
0 10,44 14 ? 3 WED3月的星期三,每天14:10和14:44触发一次
0 15 10 ? * MON-FRI每周一到周五,10:15触发
0 15 10 15 * ?每个月15号的10:15触发
0 15 10 L * ?每个月的最后一天的10:15触发
0 15 10 ? * 6L每个月的最后一个星球五的10:15触发
0 15 10 ? * 6L 2002-20052002~2005年的每个月的最后一个星期五10:15触发
0 15 10 ? * 6#3每个月的第三个星期五的10:15触发        
15/5 * * * * ?每分钟内,从第15秒开始,每隔5秒触发一次

3、表达式生成的网站

在线Cron表达式生成器

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值