Spring Task定時任務

2021-09-11 19:01:43 字數 2162 閱讀 6113

1.1.1.使用場景

1.1.2.定時任務對比

實現定時任務的方案如下:

1、使用jdk的timer和timertask實現

可以實現簡單的間隔執行任務,無法實現按日曆去排程執行任務。

2、使用quartz實現

quartz 是乙個非同步任務排程框架,功能豐富,可以實現按日曆排程。

3、使用spring task實現

spring 3.0後提供spring task實現任務排程,支援按日曆排程,相比quartz功能稍簡單,但是在開發基本夠用,支援註解程式設計方式。

在spring boot啟動類上新增註解:@enablescheduling

新建任務測試類testtask,編寫測試方法如下:

@component

public

class

choosecoursetask

catch

(interruptedexception e)

logger.

info

("***************測試定時任務1結束***************");

}

測試:

1、測試fixedrate和fixeddelay的區別

2、測試序列執行的特點

2.1.1.cron表示式

cron表示式包括6部分:

秒(0~59)   分鐘(0~59)   小時(0~23)   月中的天(1~31)   月(1~12)   週中的天(填寫mon,tue,wed,thu,fri,sat,sun,或數字1~7 1表示mon,依次類推)

特殊字元介紹:

「/」字元表示指定數值的增量

「*」字元表示所有可能的值

「-」字元表示區間範圍

「,」 字元表示列舉

「?」字元僅被用於月中的天和週中的天兩個子表示式,表示不指定值

例子:0/3 * * * * * 每隔3秒執行

0 0/5 * * * * 每隔5分鐘執行

0 0 0 * * * 表示每天0點執行

0 0 12 ? * wen 每週三12點執行

0 15 10 ? * mon-fri 每月的周一到周五10點 15分執行

0 15 10 ? * mon,fri 每月的周一和周五10點 15分執行

2.1.2.序列任務測試

參考 task1方法的的定義方法,再定義task2方法,此時共用兩個任務方法。

@scheduled(fixedrate = 3000) //上次執行開始時間後5秒執行

public void task2() catch (interruptedexception e)

logger.info("***************測試定時任務2結束***************");

}

通過測試發現,兩個任務方法由乙個執行緒序列執行,task1方法執行完成task2再執行。

3.1.1.需求分析

在專案通常是需要多個不同的任務並行去執行。

本節實現spring task並行執行任務的方法。

3.1.2.配置非同步任務

建立非同步任務配置類,需要配置執行緒池實現多執行緒排程任務。

@configuration

@enablescheduling

public class asynctaskconfig implements schedulingconfigurer, asyncconfigurer

​ @override

public executor getasyncexecutor()

​ @override

public asyncuncaughtexceptionhandler getasyncuncaughtexceptionhandler()

​ @override

public void configuretasks(scheduledtaskregistrar scheduledtaskregistrar)

}

將@enablescheduling新增到此配置類上,springboot啟動類上不用再新增@enablescheduling。

3.1.3.測試

通過測試發現兩個任務由不同的執行緒在並行執行,互不影響。

Spring Task 定時任務

所謂定時任務,就是根據我們設定的時間定時執行任務,就像定時發郵件一樣,設定時間到了,郵件就會自動傳送。在 spring 大行其道的今天,spring 也提供了其定時任務功能,spring task。同 spring 的其他功能一樣,我們既可以通過配置檔案也可以通過註解形式來實現。一 通過配置檔案 1...

Spring Task定時任務

spring task是spring3.0以後提供的定時任務工具。使用spring定時任務,除spring相關的包外不需要新增額外的jar包,支援註解和xml配置兩種形式。準備工作 在spring配置檔案頭中新增命名空間xmlns task及描述。1.1編寫註解的定時任務類 import org.s...

Spring task定時任務

第一次寫定時任務,簡訊通知定時,雖然寫完了,但是感覺 不夠簡潔,效能不行害怕跑蹦了,放到這裡一是為了記錄,更多的是希望大家提出寶貴的意見。1.將使用者id拼接成字串,用來批量查詢使用者資訊。string memberid membertransactions.stream map membertra...