定时任务的使用@Scheduled

Scheduled定时任务

//注解放到启动类上来开启Scheduling
@EnableScheduling

//使用
//每天23点50执行清理回收日志文件
@Scheduled(cron = "0 46 23 * * ?")
public void logFiles(){}

参数详解:

  • cron

    接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。

    //		   cron ="[秒] [分] [时] [日] [月] [周] [年]"
    @Scheduled(cron = "0 46 23 * * ?")
    //注意:年不是必选域,可省略;
    // 		周和日不能同时使用,使用其一时另一个要用 `?`;
    
    序号说明必填允许填写的值允许的通配符
    10-59, - * /
    20-59, - * /
    30-23, - * /
    41-31, - * ? / L W
    51-12 / JAN-DEC, - * /
    61-7 or SUN-SAT, - * ? / L #
    71970-2099, - * /

    常用说明:

    * 表示所有值。 例如:在分的字段上设置 *,表示每一分钟都会触发。

    ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。

    - 表示区间。例如 在小时上设置 “10-12”,表示 10,11,12点都会触发。

    , 表示指定多个值,例如在周字段上设置 “MON,WED,FRI” 表示周一,周三和周五触发。

    / 用于递增触发。如在秒上面设置”5/15” 表示从5秒开始,每增15秒触发(5,20,35,50)。 在日字段上设置’1/3’所示每月1号开始,每隔三天触发一次。如:每隔1分钟执行一次:0 */1 * * * ? | 每2分钟执行1次: 0 */2 * * * ?

    表达式占位符:

    ​ cron属性接收的cron表达式支持占位符;

    application.yml
    time:
    		cron: 0 */1 * * * ?
            interval: 5
    //使用
    @Scheduled(cron = "${time.cron}")
    @Scheduled(cron = "0 */${time.interval} * * * ?")
    
  • fixedDelay

    上一次执行完毕后多久在次执行;间隔多久执行;

    @Scheduled(fixedDelay = 5000) //上一次执行完毕时间点之后5秒再执行
    
  • fixedDelayString

    fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。如:

    @Scheduled(fixedDelayString = "5000") //上一次执行完毕时间点之后5秒再执行
    //使用配置文件中的占位符
    @Scheduled(fixedDelayString = "${time.fixedDelay}")
    void testFixedDelayString() {
        System.out.println("Execute at " + System.currentTimeMillis());
    }
    
  • fixedRate

    上一次开始执行时间点之后多长时间再执行。如:

    @Scheduled(fixedRate = 5000) //上一次开始执行时间点之后5秒再执行
    
  • fixedRateString

    fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

  • initialDelay

    @Scheduled(initialDelay=1000, fixedRate=5000) //第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
    
  • initialDelayString

    initialDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值