美文网首页
SpringBoot定时任务

SpringBoot定时任务

作者: 忧郁的小码仔 | 来源:发表于2017-06-23 15:06 被阅读236次

    用SpringBoot做定时任务只需要添加相应的注解就okay,相当简单。

    1.在启动类上添加@EnableScheduling注解

    @SpringBootApplication
    @EnableScheduling 
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

    2.定时任务实现类:

    定时任务有两种实现方式

    @Component
    public class SchedulerTask {
    
        private int count = 0;
    
        @Scheduled(cron = "*/6 * * * * ?")
        private void process(){
            System.out.println("this is scheduler task runing  "+(count++));
        }
    }
    
    
    @Component
    public class Scheduler2Task {
    
        private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    
        @Scheduled(initialDelay=12000, fixedRate = 6000)
        public void reportCurrentTime() {
            System.out.println("现在时间:" + dateFormat.format(new Date()));
        }
    }
    
    

    3. Scheduled说明

    @Scheduled接受两种定时的设置,一种是我们常用的cron="*/6 * * * * ?",一种是 fixedRate = 6000,两种都表示每隔六秒打印一下内容。

    @Scheduled(fixedRate = 6000):上一次开始执行时间点之后6秒再执行
    @Scheduled(fixedDelay = 6000):上一次执行完毕时间点之后6秒再执行
    @Scheduled(initialDelay=1000, fixedRate=6000):第一次延迟1秒后执行,之后按fixedRate的规则每6秒执行一次

    4. cron说明

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:

    Seconds Minutes Hours DayofMonth Month DayofWeek Year或
    Seconds Minutes Hours DayofMonth Month DayofWeek
    

    (1)*:表示匹配该域的任意值,假如在Minutes域使用, 即表示每分钟都会触发事件。
    (2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用
    ,如果使用*表示不管星期几都会触发,实际上并不是这样。
    (3)-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
    (4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
    (5),:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。

    相关文章

      网友评论

          本文标题:SpringBoot定时任务

          本文链接:https://www.haomeiwen.com/subject/xyxtcxtx.html