【注】本文譯自: https://www.tutorialspoint.com/spring_boot/spring_boot_scheduling.htm
調度用來處理特定時間周期的任務,Spring Boot 為 Spring 應用撰寫調度器提供了良好的支持,
Java Cron 運算式
Java Cron 運算式用于配置 CronTrigger 實體,是 org.quartz.Trigger 的子類,關于 Java cron 運算式的更多資訊可參考:https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm @EnableScheduling 注解用于使你的應用能夠使用調度器,這個注解應當被加在主 Spring Boot 應用類檔案中,1 @SpringBootApplication 2 @EnableScheduling 3 4 public class DemoApplication { 5 public static void main(String[] args) { 6 SpringApplication.run(DemoApplication.class, args); 7 } 8 }@Scheduled 注解用于觸發一個特定時間周期的調度器,
1 @Scheduled(cron = "0 * 9 * * ?") 2 public void cronJobSch() throws Exception { 3 }以下代碼展示了如何在每天的早上 9:00 到 9:59 之間每分鐘執行任務:
1 package com.tutorialspoint.demo.scheduler; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import org.springframework.scheduling.annotation.Scheduled; 6 import org.springframework.stereotype.Component; 7 8 @Component 9 public class Scheduler { 10 @Scheduled(cron = "0 * 9 * * ?") 11 public void cronJobSch() { 12 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 13 Date now = new Date(); 14 String strDate = sdf.format(now); 15 System.out.println("Java cron job expression:: " + strDate); 16 } 17 }以下截圖展示了應用在 09:03:23 啟動之后如何每隔一分鐘執行一次:
固定頻度
固定頻度調度器被用于在特定時間執行任務,它不等待前一個任務完成,時間單位為毫秒,示例代碼如下:1 @Scheduled(fixedRate = 1000) 2 public void fixedRateSch() { 3 }以下代碼示例是應用啟動后的每秒鐘執行一個任務:
1 package com.tutorialspoint.demo.scheduler; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import org.springframework.scheduling.annotation.Scheduled; 6 import org.springframework.stereotype.Component; 7 8 @Component 9 public class Scheduler { 10 @Scheduled(fixedRate = 1000) 11 public void fixedRateSch() { 12 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 13 14 Date now = new Date(); 15 String strDate = sdf.format(now); 16 System.out.println("Fixed Rate scheduler:: " + strDate); 17 } 18 }觀看以下截屏,可以看出應用在 09:12:00 啟動后以每隔一秒鐘的固定頻度執行任務,
固定延遲
固定延遲調度器用于在指定時間執行任務,它應當等待上一個任務完成,單位為毫秒,示例代碼如下:1 @Scheduled(fixedDelay = 1000, initialDelay = 1000) 2 public void fixedDelaySch() { 3 }這里,initialDelay 是在初始化之后到首次執行間的延遲值, 下面的例子中,是從應用啟動完成后 3 秒后執行每秒一次的任務:
package com.tutorialspoint.demo.scheduler; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class Scheduler { @Scheduled(fixedDelay = 1000, initialDelay = 3000) public void fixedDelaySch() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Date now = new Date(); String strDate = sdf.format(now); System.out.println("Fixed Delay scheduler:: " + strDate); } }下面看到的截屏顯示的是應用在 09:18:39 啟動完成 3 秒后,固定延遲調度器任務每秒執行一次的情況,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5960.html
標籤:Java
