springboot以后,使用@schedule注解,开启定时任务

企业开发中,咱们有时候会须要用到定时任务,spring已经为咱们提供了相关的的功能,并且很是之简单,咱们采用注解就能使用,下面就是一个简单的demojava

 

先介绍一下开发环境:web

  1. jdk版本是1.8
  2. springboot的版本是1.4.1
  3. 开发工具为 intellij idea

 

依赖包的话,其实springboot引入web包就行了,可是避免有人不知道,这里仍是贴出来一份spring

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>

 

包咱们引入进来了,而后就是注解demo啦springboot

/**
 * 项目名:SpringBootDemo
 * 建立人:贺小五
 * 建立时间:16/12/30 上午11:34
 * 类名:ScheduleDemo
 * 类描述:
 *        spring定时器测试demo
 */
@EnableScheduling
@Component
public class ScheduleDemo {

   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

   /**
    * fixedRate多久执行一次,单位:毫秒
    * initialDelay 延迟容器启动后执行,单位:毫秒
    */
   @Scheduled(fixedRate = 10000,initialDelay = 2000)
   public void scheduleTest1(){
      System.out.println("10s执行一次--->"+sdf.format(new Date()));
   }


   /**
    *
    *     fixedDelay在指定的时间执行一次,单位:毫秒
    *  在建立后会执行一次,在第一次执行后,会每隔5S执行一次
    */
   @Scheduled(fixedDelay = 5000)
   public void scheduleTest2(){
      System.out.println("5s执行一次--->"+sdf.format(new Date()));
   }


   /**
    * cron表达式,下面表示,每隔1s执行一次,具体的能够自行定义
    */
   @Scheduled(cron = "0/1 * * * * ? ")
   public void scheduleTest3(){
      System.out.println("5s执行一次--->"+sdf.format(new Date()));
   }

}

 

执行boot的启动类,而后咱们就能够观看打印结果了:ide

 

咱们会发现,10S调用一次的,跟5S调用的会差2秒,是由于设定了第一次调用的延迟时间为2Sspring-boot

 

下面是一些注解的注释:工具

  1. @EnableScheduling 表示开启任务调度,用于类上的注解,该注解能够使用在boot的启动类,也能够使用在schedule配置类上
  2. @Scheduled 表示任务调用方法,用于方法上;

 

好了,上面就是一个简单的任务调度器,很简单的一个demo,具体怎么使用,我的根据业务去就行了,下面在介绍一下,@Scheduled注解内参数的定义:开发工具

 

@Scheduled注解下有一些参数,例如 fixedDelay,fixedRate...等,我这大概介绍下测试

  1. cron 表达式,能够指定某个时刻执行,具体的能够使用搜索引擎,这里就不详细介绍了
  2. zone 表示时区,默认是使用本地的时区,有时候可能须要国外的,能够使用 java.util.TimeZone时区类下的getTimeZone获取须要的时区
  3. fixedDelay  表示上次执行完毕到下次执行开始间隔数,单位:毫秒
  4. fixedDelayString 同上,只不过填写的是字符串,不是long类型
  5. fixedRate 表示上次执行完毕到下次执行开始的间隔数,单位:毫秒
  6. fixedRateString 同上,只不过填写的是字符串,不是long类型
  7. initialDelay 推迟第一次执行以前的毫秒数在fixedRate或fixedDelay的任务,单位:毫秒
  8. initialDelayString 同上,只不过填写的是字符串,不是long类型

 

到这,文章就结束了!搜索引擎

以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正

欢迎转载,请注明出处跟做者,谢谢!

相关文章
相关标签/搜索