十一、SpringBoot------定時任務

 
Google Translate GTranslateWinS Options
Google Translate GTranslateWinS Options

 開發工具:STS

代碼下載連接:https://github.com/theIndoorTrain/Springboot/tree/52ef6c0c805913db1e66ed18671c322e284233f0

前言:

以前咱們有講過Quartz任務調度。html

如今,咱們來說解下Spring本身的任務調度。java

在Springboot項目中,這種超級簡單的調度方式將會給咱們帶來便利。git

 

任務一:

5s後開始,每10s執行一次,執行一次任務要2s;github

1.在啓動類中開啓任務調度,加上@EnableScheduling

 1 package com.xm;  2 
 3 import java.text.SimpleDateFormat;  4 import java.util.Date;  5 
 6 import org.springframework.boot.SpringApplication;  7 import org.springframework.boot.autoconfigure.SpringBootApplication;  8 import org.springframework.scheduling.annotation.EnableScheduling;  9 
10 @EnableScheduling 11 @SpringBootApplication 12 public class Demo0061Application { 13 
14     public static void main(String[] args) { 15         16         SpringApplication.run(Demo0061Application.class, args);
       System.out.println("Start Job:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
17 } 18 }

2.定義任務

 1 package com.xm.job;  2 
 3 import java.text.SimpleDateFormat;  4 import java.util.Date;  5 
 6 import org.springframework.scheduling.annotation.Scheduled;  7 import org.springframework.stereotype.Component;  8 
 9 @Component 10 public class HelloJob { 11     
12     @Scheduled(initialDelay=5000,fixedRate=10000) 13     public void run() { 14         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); 15         try { 16             Thread.sleep(2000); 17         } catch (InterruptedException e) { 18             // TODO Auto-generated catch block
19  e.printStackTrace(); 20  } 21         System.out.println("hello world"); 22  } 23 
24 }

3.運行結果截圖

4.分析

1.initialDelay=5000:任務開始時間爲5s之後
2.fixedRate=10000:任務每10s以內完成一次
在這裏任務時間是小於fixedRate
如今咱們讓任務運行時間改成11s
@Scheduled(initialDelay=5000,fixedRate=10000) public void run() { System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); try { Thread.sleep(11000); } catch (InterruptedException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } System.out.println("hello world"); } 
運行結果爲:

 
  
 

任務二:

 
 

5s後開始,每間隔10s執行一次,執行一次任務要2s;spring

1.定義任務

@Scheduled(initialDelay=5000,fixedDelay=10000) public void run() { System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); try { //Thread.sleep(11000);
            Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } System.out.println("hello world"); } 

 

2.運行結果截圖:

分析:

fixedDelay:每次任務完成結束後再開始計時



任務三:
天天16:00:00開始到16:21:59每5s執行一次
1.定義任務
 1     @Scheduled(cron="0/5 0-21 16 * * ?")  2     public void run() {  3         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));  4         try {  5             //Thread.sleep(11000);
 6             Thread.sleep(2000);  7         } catch (InterruptedException e) {  8             // TODO Auto-generated catch block
 9  e.printStackTrace(); 10  } 11         System.out.println("hello world"); 12     }
 
 

 

2.運行結果截圖:

 

 

 

3.分析工具

這裏運用到了Cron表達式,請點擊這裏查看詳解。3.初識Cron表達式
開發工具

 

                               2018-07-16
相關文章
相關標籤/搜索