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

企业开发中,我们有时候会需要用到定时任务,spring已经为我们提供了相关的的功能,而且非常之简单,我们采用注解就能使用,下面就是一个简单的demo

 

先介绍一下开发环境:

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

 

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

<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啦

/**
 * 项目名: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的启动类,然后我们就可以观看打印结果了:

233024_VLPd_2278977.png

 

我们会发现,10S调用一次的,跟5S调用的会差2秒,是因为设定了第一次调用的延迟时间为2S

 

下面是一些注解的注释:

  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类型

 

到这,文章就结束了!

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

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

 

 

转载于:https://my.oschina.net/u/2278977/blog/816057

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值