如何在SpringBoot中实现一个定时任务

  介绍

本篇文章为大家展示了如何在SpringBoot中实现一个定时任务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>一、定时任务实现的几种方式:

<强>计时器

这是java自带的java.util.Timer类,这个类允许你调度一个java.util。TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。

<强> ScheduledExecutorService

也jdk自带的一个类,是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。

<强>春任务

Spring3.0以后自带的任务,可以将它看成一个轻量级的石英,而且使用起来比石英简单许多。

<强>石英

这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。

<强>二,基于SpringBoot的定时任务

使用SpringBoot自带的定时任务,只需要添加相应的注解就可以实现

2.1导入SpringBoot启动包

& lt; dependency>   & lt;才能groupId> org.springframework.boot</groupId>   & lt;才能artifactId> spring-boot-starter-parent</artifactId>   & lt;才能version> 2.1.1.RELEASE</version>   & lt;/dependency>

2.2启动类启用定时

在启动类上面加上@EnableScheduling即可开启定时

@SpringBootApplication//@EnableScheduling 开启定时   public  class  SpringBootDemoTimeTaskApplication  {   private 才能static  final  Logger  Logger =, LoggerFactory.getLogger (SpringBootDemoTimeTaskApplication.class);   public 才能;static  void  main (String [], args), {   ,,,SpringApplication.run (SpringBootDemoTimeTaskApplication.class);   ,,,logger.info (“SpringBootDemoTimeTaskApplication 开始!“);   ,,}   }

2.3创建定时任务实现类SchedulerTask

@ component   public  class  SchedulerTask  {   private 才能static  final  Logger  Logger =, LoggerFactory.getLogger (SchedulerTask.class);   ,/* *   ,,*,@Scheduled (=fixedRate  6000),:上一次开始执行时间点之后6秒再执行   ,,*,@Scheduled (=fixedDelay  6000),:上一次执行完毕时间点之后6秒再执行   ,,*,@Scheduled (initialDelay=1000,, fixedRate=6000),:第一次延迟1秒后执行,之后按fixedRate的规则每6秒执行一次   ,,*,@Scheduled (cron=?“):详见cron表达式http://www.pppet.net/,,*/@Scheduled才能(fixedRate =, 5000)   public 才能;void  scheduled1 (), {   ,,,logger.info(“=====在在在在在使用fixedRate执行定时任务“);   ,,}   @Scheduled才能(fixedDelay =, 10000)   public 才能;void  scheduled2 (), {   ,,,logger.info(“=====在在在在在使用fixedDelay执行定时任务“);   ,,}   @Scheduled才能(cron=?/6, *, *, *, *, ?“)   private 才能;void  scheduled3 () {   ,,,logger.info(“使用cron执行定时任务“);   ,,}   }

运行结果:

2019 - 03 - 09年,17:33:05.681  INFO  7752年,——安康;(,,,,,主要],c.v.t.SpringBootDemoTimeTaskApplication :, SpringBootDemoTimeTaskApplication 开始!   2019 - 03 - 09年,17:33:06.002  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,:,使用cron执行定时任务   2019 - 03 - 09年,17:33:10.680  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,,,=====在在在在在使用fixedRate执行定时任务   2019 - 03 - 09年,17:33:12.003  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,:,使用cron执行定时任务   2019 - 03 - 09年,17:33:15.676  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,,,=====在在在在在使用fixedRate执行定时任务   2019 - 03 - 09年,17:33:15.676  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,,,=====在在在在在使用fixedDelay执行定时任务   2019 - 03 - 09年,17:33:18.002  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,:,使用cron执行定时任务   2019 - 03 - 09年,17:33:20.677  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,,,=====在在在在在使用fixedRate执行定时任务   2019 - 03 - 09年,17:33:24.002  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,:,使用cron执行定时任务   2019 - 03 - 09年,17:33:25.680  INFO  7752年,——安康;(安排一才能),cn.van.task.service.SchedulerTask ,,,,,=====在在在在在使用fixedRate执行定时任务   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何在SpringBoot中实现一个定时任务