如何在springboot中使用定時任務

2021-10-03 18:18:10 字數 1965 閱讀 9698

1. 開啟支援——在啟動類上加註解

由於spring schedule已經包含在spring-boot-starter基礎模組中了,所以不需要增加額外的依賴。

@enablescheduling

<

----

--這裡加註解開啟

public

class

}2. 建立任務類——執行週期性的工作

@component

<

----

--這裡要加註解

public

class

mywork

}

3. 定時任務的兩種型別
@scheduled

(fixedrate =

5000

)// 表示每隔 5000 毫秒執行一次

public

void

reportcurrenttime()

@scheduled

(cron =

"0 30 11 ? * *"

)// 表示在指定時間執行

public

void

fixtimeexecution()

cron表示式的解釋如下

4. 自定義執行緒池

protected

void

scheduletasks()

//省略...

}

對於多個任務而言,需要增加執行緒池的執行緒數量,避免任務都放在乙個單執行緒中序列地執行,導致任務執行時間過長,執行的時效性不能保障。

注意:當方法的執行時間超過任務排程週期時,排程器會在下個週期執行方法內容。

@configuration

public

class

scheduleconfig

implements

schedulingconfigurer

@bean

(destroymethod=

"shutdown"

)public executor taskexecutor()

}

當然使定時任務並行執行還可以使用 @enableasync 和 @async 這兩個註解。

@component

@enableasync

public

class

asyncscheduledtasks

", dateformat.

format

(new

date()

));}

catch

(interruptedexception e)

}}

5. web應用中的啟動和關閉問題

我們知道通過spring載入或初始化的bean,在服務停止的時候,spring會自動解除安裝(銷毀)。但是由於執行緒是jvm級別的,如果使用者在web應用中啟動了乙個執行緒,那麼這個執行緒的生命週期並不會和web應用保持一致。也就是說,即使web應用停止了,這個執行緒依然沒有結束(死亡)。

解決方法:

@component

public

class

mytask

implements

disposablebean

//省略...

}

public

class

mytasklistenter

implements

servletcontextlistener

//省略...

}

參考料

如何在jupyter notebook中使用R語言

r語言安裝python安裝 安裝時一定要把路徑項選擇上 網上教程諸多,不再贅述。方法一推薦直接使用anaconda,上面自帶jupyter notebook而且環境配置已經設定好了 方法二以管理者身份 開啟命令提示符,轉到python的安裝路徑,採用pip命令安裝 把pip更新到最新版本,此步非必須...

如何在AndroidStudio中使用AIDL

本章節介紹如何在androidstudio中使用aidl 2.在aidl下建立乙個包,包裡建立乙個 aidl檔案,右鍵aidl new aidl aidl file 紅框就是建立完成後的樣子 3.在aidl檔案寫要被呼叫的方法,此方法不能有許可權修飾符 4.首先build下,然後建立乙個servic...

如何在IDEA中建立Spring Boot專案

1.spring boot是spring家族中的乙個全新的框架,它用來簡化spring應用程式的建立和開發過程,也可以說spring boot能簡化我們之前採用springmvc spring mybatis框架進行開發的過程。2.在以往我們採用springmvc spring mybatis框架進...