@Scheduled注解用法

首页 / 新闻资讯 / 正文

项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发,要使用@Scheduled注解,首先需要在启动类添加@EnableScheduling,启用Spring的计划任务执行功能,这样可以在容器中的任何Spring管理的bean上检测@Scheduled注解,执行计划任务 

关于@Scheduled注解我写了一个简单的demo

只需要把修改注解里面的时间算法就行了

定时任务     @Autowired     private RedisLock redisLock;     @Scheduled(cron = "0 0 */3 * * ?")//定时任务注解     public void reportCurrentTime() {         //生成id         String id = UUID.randomUUID().toString();         try {             //加redis锁,每个定时器有自己的常量参数             boolean flag = redisLock.lock(id, RedisLock.OUTBREAK_LOCK_KEY);                    } catch (Exception e) {             e.printStackTrace();         } finally {             //解锁             redisLock.unlock(id, RedisLock.OUTBREAK_LOCK_KEY);                     }     }

 以下是我总结的几个比较常用的时间算法

每隔5秒执行一次:            @Scheduled(cron = "*/5 * * * * ?")
每隔1分钟执行一次:           @Scheduled(cron = "0 */1 * * * ?")
每天23点执行一次:           @Scheduled(cron = "0 0 23 * * ?")
每天凌晨1点执行一次:          @Scheduled(cron = "0 0 1 * * ?")
每月1号凌晨1点执行一次:      @Scheduled(cron = "0 0 1 1 * ?")
每月最后一天23点执行一次:     @Scheduled(cron = "0 0 23 L * ?")
每周星期天凌晨1点实行一次:     @Scheduled(cron = "0 0 1 ? * L")
在26分、29分、33分执行一次:     @Scheduled(cron = " 0 26,29,33 * * * ?")
每天的0点、13点、18点、21点都执行一次:  @Scheduled(cron = " 0 0 0,13,18,21 * * ?")