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

 

到這,文章就結束了!搜索引擎

以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正

歡迎轉載,請註明出處跟做者,謝謝!

相關文章
相關標籤/搜索