1. 程式人生 > 其它 >任務排程使用(@EnableScheduling和@Scheduled)和定時任務

任務排程使用(@EnableScheduling和@Scheduled)和定時任務

一、定時任務

通過配置註解來開啟對定時任務的支援,然後在需要定時執行的方法上面配置註解@Scheduled即可。

二、註解描述

@EnableScheduling:在啟動類中使用該註解,開啟自動掃描功能

@EnableScheduling
public class App {
public static void main(String[] args) {
  SpringApplication.run(App.class)  
}
}

@Scheduled:在需要執行的定時方法上新增該註解即可

@Component
public class Send{
@Scheduled("cron = "1-10 * * * * *"")
public class  time{} }
 1、fixedDelay和fixedRate,單位是毫秒;
      區別:fixedRate---,每多少毫秒執行一次,與具體業務執行時間沒關係;而fixedDelay是當任務執行完畢後按照設定的毫秒值執行任務。所以根據實際業務不同,我們會選擇不同的方式。
 2、cron表示式:依據業務需求,可設定具體的任務執行時間,預定時間一到就會自動執行;
   cron一共有7位,但是最後一位是年,可以留空,一般情況可以寫6位:
   * 第一位,表示秒,取值0-59
   * 第二位,表示分,取值0-59
   * 第三位,表示小時,取值0-23
   * 第四位,日期天/日,取值1-31
   * 第五位,日期月份,取值1-12
   * 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二週的意思
          另外:1表示星期天,2表示星期一。
   
* 第7為,年份,可以留空,取值1970-2099 3、cron中,還有一些特殊的符號,含義如下: (*)星號:可以理解為每的意思,每秒,每分,每天,每月,每年... (?)問號:問號只能出現在日期和星期這兩個位置。 (-)減號:表達一個範圍,如在小時欄位中使用“10-12”,則表示從10到12點,即10,11,12 (,)逗號:表達一個列表值,如在星期欄位中使用“1,2,4”,則表示星期一,星期二,星期四 (/)斜槓:如:x/y,x是開始值,y是步長,比如在第一位(秒) 0/15就是,從0秒開始,每15秒,最後就是0,15,30,45,60 另:*/y,等同於0/y 4、舉例描述cron:
0 0 8 * * ? 每天8點執行 0 30 8 * * ? 每天8點30分執行 0 30 5 ? * * 每天8點30分執行,與上面作用相同,區別特殊符號 0 5/5 8 * * ? 每天8點的 5分,10分,15分,20分,35分,40分,45分,50分,55分這幾個時間點執行 0 30 8 ? * 1 每週星期天,8點30分 執行,注:1表示星期天 0 30 8 ? * 1#3 每個月的第三個星期,星期天執行,#號只能出現在星期的位置

除了cron屬性之外,@Scheduled還有以下的屬性可以配置
zone:取伺服器所在地的時區

fixedDelayString:上一次執行完畢時間點之後多長時間再執行

fixedRate:自專案開始的時候每隔幾秒鐘定時執行

fixedRateString

initialDelay:第一次延遲多長時間後再執行,可以同fixedRate組合使用

initialDelayString

ScheduledExecutorService、開源工具包Quartz,以及Spring和Quartz的結合等內容。

 

JDK原生定時工具TIMER
連結:https://blog.csdn.net/m0_62714732/article/details/121063214