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)如果,间隔时间<程序执行时间,每次时间差=下一次间隔时间;