springboot-定时任务

Posted 扶不起的刘阿斗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot-定时任务相关的知识,希望对你有一定的参考价值。

springboot定时任务需要@EnableScheduling注解

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

定时任务有三种执行方式,首先每次任务执行要等到上次任务执行完成后才会执行,fixedDelay,fixedRate可以设定初始延迟时间initialDelay,cron表达式不能。

  1. fixedDelay:本次任务执行完成后,延迟xx秒后执行下次任务。
  2. fixedRate:固定xx秒执行一次,但如果执行阻塞时间超过下次执行时间,则任务执行完成后立即执行下一次。
  3. cron表达式:按照表达式执行,但如果执行阻塞时间超过下次执行时间,则跳过下次的表达式执行时间,等待再下一次的执行时间。
@Component
public class DelayJob {

    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");

    @Scheduled(fixedDelay=2000)
    public void testFixedDelay(){
        System.out.println("testFixedDelay begin at "+format.format(new Date()));
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("testFixedDelay end at"+format.format(new Date()));
    }

    @Scheduled(fixedRate=2000)
    public void testFixedRate(){
        System.out.println("testFixedRate begin at "+format.format(new Date()));
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("testFixedRate end at"+format.format(new Date()));
    }

    @Scheduled(cron="0/4 * * * * ?")
    public void testCronTab(){
        System.out.println("testCronTab begin at "+format.format(new Date()));
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("testCronTab end at"+format.format(new Date()));
    }
}

 

以上是关于springboot-定时任务的主要内容,如果未能解决你的问题,请参考以下文章

springboot项目使用SchedulingConfigurer实现多个定时任务

#yyds干货盘点# springboot整合Elastic Job实现分片配置定时任务

SpringBoot定时任务

Springboot 内置定时器的使用

SpringBoot使用SchedulingConfigurer实现多个定时任务多机器部署问题

SpringBoot使用SchedulingConfigurer实现多个定时任务多机器部署问题