Springboot的定时任务

1.建立任务定时类

//注解@Component是把类实例化到Spring容器中
@Component
public class ScheduledTask {

    @Scheduled(fixedRate = 2000)
    public void reportCurrent() {
        System.out.println("现在时间:" + LocalDateTime.now());
    }
}

2.启动类上添加@EnableScheduling注解

@SpringBootApplication
@EnableScheduling
public class SpringbootRedisDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootRedisDemoApplication.class, args);
    }
}

3.三种形式的定时任务

(1)固定等待时间
写法:@Scheduled(fixedDelay = 时间间隔)
不管线程任务的执行时间的,每次都要把任务执行完成后再延迟固定时间后再执行下一次。
注意:
(a)程序启动的时候,会执行第一次;
(b)第二次执行的前提是上一次任务执行完毕之后才会执行。
(c)如果,间隔时间>=程序执行时间,每次时间差=间隔时间+程序执行时间}
(d)如果,间隔时间<程序执行时间,时间差可能是=程序执行时间(这是大部分的情况);也可能是=间隔时间+程序执行时间;
(2)固定间隔时间
写法:@Scheduled(fixedRate = 时间间隔)
以固定频率来执行线程任务
注意:
(a)程序启动之后,就会启动第一次;
(b)如果,间隔时间>=程序执行时间,每次时间差=间隔时间;
(c)如果,间隔时间<程序执行时间,每次时间差=间隔时间+程序执行时间;
(3)Corn表达式
写法:@Scheduled(cron = Corn表达式)
注意:
(a)程序启动之后,就会启动第一次;
(b)如果,间隔时间>=程序执行时间,每次时间差=间隔时间;
(c)如果,间隔时间<程序执行时间,每次时间差=下一次间隔时间;

猜你喜欢

转载自blog.csdn.net/qinaye/article/details/80236710