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表达式不能。
- fixedDelay:本次任务执行完成后,延迟xx秒后执行下次任务。
- fixedRate:固定xx秒执行一次,但如果执行阻塞时间超过下次执行时间,则任务执行完成后立即执行下一次。
- 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实现分片配置定时任务