SpringBoot整合定時任務(wù)的方法
一、Scheduled原理
JUC 包中的 Executor 架構(gòu)帶來了線程的創(chuàng)建與執(zhí)行的分離。Executor 的繼承者ExecutorService 下面衍生出了兩個重要的實現(xiàn)類,他們分別是
1、ThreadPoolExecutor 線程池
2、ScheduledThreadPoolExecutor 支持周期性任務(wù)的線程池
通過 ThreadPoolExecutor 可以實現(xiàn)各式各樣的自定義線程池,而 ScheduledThreadPoolExecutor 類則在自定義線程池的基礎(chǔ)上增加了周期性執(zhí)行任務(wù)的功能
二、導入依賴
springboot3之后自帶定時任務(wù)器,所以只需要引用springboot啟動器就可以
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.5</version> </parent>
三、編寫定時任務(wù)
定時任務(wù)所在的類需要是spring的組件,所以在定時任務(wù)類上需要加上@Component注解,并且在定時任務(wù)方法上加上@Scheduled注解,聲明這是一個定時任務(wù)。(這里需要注意的是@Scheduled注解里面的cron表達式,后面會詳細介紹)
@Component public class MySchduled { private int count = 0; @Scheduled(cron = "0/3 * * * * ? ") public void print(){ System.out.println("hello:" + count++); } }
四、Cron表達式
Cron表達式是一種用于指定定時任務(wù)執(zhí)行時間的字符串,它由六個或七個字段組成,分別表示秒、分、時、日期、月份、星期和年份(可選)。每個字段可以是一個具體的值、一個范圍、一個遞增步長,或者使用特殊字符。12
- 星號(*):在某個字段中使用時,表示該字段可以取該字段的所有可能值。例如,在分鐘字段中使用 * 表示每分鐘。
- 問號(?):只在日期和星期字段中使用,通常作為無意義的值,相當于占位符。
- 減號(-):表示一個范圍,例如在小時字段中使用“10-12”表示從10點到12點,即10、11、12點。
- 逗號(,):表示一個列表值,例如在星期字段中使用“MON,WED,FRI”表示星期一、星期三和星期五。
- 斜杠(/):表示一個等步長序列,例如在分鐘字段中使用0/15表示從0秒開始,每隔15秒觸發(fā)一次。
- L:只在日期和星期字段中使用,代表“Last”的意思,在日期字段中表示這個月份的最后一天,在星期字段中表示星期六。
- W:只能出現(xiàn)在日期字段里,是對前導日期的修飾,表示離該日期最近的工作日。
例如,上面我們使用的(0/3 * * * * ?)的意思就是每隔3秒執(zhí)行一次
網(wǎng)上有很多cron表達式在線生成器,可以在線生成,使用起來也比較方便
五、啟動
啟動定時任務(wù)掃描是非常重要的一步,沒啟動的話定時任務(wù)不會執(zhí)行,啟動定時任務(wù)需要在啟動類或者配置類上添加@EnableScheduling注解,表示啟動定時任務(wù)掃描
@SpringBootApplication @MapperScan("com.zxc.mapper") @EnableScheduling @EnableAspectJAutoProxy public class AuthApplication { public static void main(String[] args) { SpringApplication.run(AuthApplication.class,args); } }
到此這篇關(guān)于SpringBoot整合定時任務(wù)的文章就介紹到這了,更多相關(guān)SpringBoot定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決IDEA Gradle構(gòu)建報錯''Cause: zip END header not found''
這篇文章主要介紹了解決IDEA Gradle構(gòu)建報錯"Cause: zip END header not found"的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02Java的synchronized關(guān)鍵字深入解析
這篇文章主要介紹了Java的synchronized關(guān)鍵字深入解析,在并發(fā)編程中,多線程同時并發(fā)訪問的資源叫做臨界資源,當多個線程同時訪問對象并要求操作相同資源時,分割了原子操作就有可能出現(xiàn)數(shù)據(jù)的不一致或數(shù)據(jù)不完整的情況,需要的朋友可以參考下2023-12-12分布式醫(yī)療掛號系統(tǒng)EasyExcel導入導出數(shù)據(jù)字典的使用
這篇文章主要為大家介紹了分布式醫(yī)療掛號系統(tǒng)EasyExcel導入導出數(shù)據(jù)字典的使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04Maven+Tomcat8 實現(xiàn)自動化部署的方法
本篇文章主要介紹了Maven+Tomcat8 實現(xiàn)自動化部署的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10springboot jsp支持以及轉(zhuǎn)發(fā)配置方式
文章介紹了如何在Spring Boot項目中配置和使用JSP,并提供了一步一步的指導,包括添加依賴、配置文件設(shè)置、控制器和視圖的使用2024-12-12java system類使用方法示例 獲取系統(tǒng)信息
這篇文章主要介紹了java system類使用方法,該類中的方法都是靜態(tài)的。不能被實例化,沒有對外提供構(gòu)造函數(shù),該類可以獲取系統(tǒng)信息2014-01-01Spring Boot 開發(fā)私有即時通信系統(tǒng)(WebSocket)
本文利用Spring Boot作為基礎(chǔ)框架,Spring Security作為安全框架,WebSocket作為通信框架,實現(xiàn)點對點聊天和群聊天2017-04-04