SpringBoot創(chuàng)建定時(shí)任務(wù)的示例詳解
網(wǎng)上有很多 icon表達(dá)式生成器
,可以直接搜索 定時(shí)任務(wù)icon表達(dá)式生成器
,這里就不放鏈接了。
1、在入口類開(kāi)啟定時(shí)任務(wù)支持
在 SpringBoot
應(yīng)用的啟動(dòng)類上,添加 @EnableScheduling
注解來(lái)開(kāi)啟定時(shí)任務(wù)的支持。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
2、創(chuàng)建定時(shí)任務(wù)
創(chuàng)建一個(gè)包含定時(shí)任務(wù)方法的類,并在該方法上使用@Scheduled
注解來(lái)指定任務(wù)的執(zhí)行頻率。
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ScheduledTasks { // 每5秒執(zhí)行一次 @Scheduled(fixedRate = 5000) public void doTaskEveryFiveSeconds() { System.out.println("任務(wù)每5秒執(zhí)行一次:" + new Date()); } // 每天的特定時(shí)間執(zhí)行一次 @Scheduled(cron = "0 0 12 * * ?") // 每天中午12點(diǎn)執(zhí)行 public void doTaskEveryDayAtNoon() { System.out.println("任務(wù)每天中午12點(diǎn)執(zhí)行一次:" + new Date()); } }
fixedRate
屬性用于指定任務(wù)執(zhí)行的固定頻率(以毫秒為單位)。cron
屬性則允許你使用CRON表達(dá)式來(lái)指定任務(wù)的執(zhí)行時(shí)間。
這兩個(gè)屬性在實(shí)際的項(xiàng)目開(kāi)發(fā)中都會(huì)做到配置文件中,便于修改。
3、配置定時(shí)任務(wù)線程池(可選)
默認(rèn)情況下,Spring Boot使用單線程來(lái)執(zhí)行所有的定時(shí)任務(wù)。如果需要并發(fā)執(zhí)行多個(gè)定時(shí)任務(wù),或者某個(gè)任務(wù)執(zhí)行時(shí)間較長(zhǎng)不希望阻塞其他任務(wù),可以自定義定時(shí)任務(wù)的線程池。
在 application.properties
中設(shè)置相關(guān)配置
spring.task.scheduling.pool.size=5 # 線程池大小,可以用 ${} 配置 spring.task.scheduling.thread-name-prefix=task-scheduler- # 線程名前綴
也可以在配置類中自定義 TaskScheduler
Bean
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; @Configuration public class SchedulerConfig { @Bean public ThreadPoolTaskScheduler threadPoolTaskScheduler() { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(5); scheduler.setThreadNamePrefix("task-scheduler-"); return scheduler; } }
啟動(dòng)SpringBoot應(yīng)用,定時(shí)任務(wù)就會(huì)按照指定的頻率執(zhí)行。
請(qǐng)注意,
@Scheduled
注解的方法不應(yīng)該有任何參數(shù),并且返回類型應(yīng)該是void
。此外,@Scheduled
注解的方法可以定義在配置類中,但最好將其定義在一個(gè)獨(dú)立的Bean中,以便于測(cè)試和管理。
以上就是SpringBoot創(chuàng)建定時(shí)任務(wù)的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot創(chuàng)建定時(shí)任務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- springboot實(shí)現(xiàn)定時(shí)任務(wù)@Scheduled方式
- SpringBoot使用@Scheduled實(shí)現(xiàn)定時(shí)任務(wù)的并行執(zhí)行
- SpringBoot整合定時(shí)任務(wù)的方法
- SpringBoot之解決多個(gè)定時(shí)任務(wù)阻塞的問(wèn)題
- springboot定時(shí)任務(wù)SchedulingConfigurer異步多線程實(shí)現(xiàn)方式
- 如何解決SpringBoot定時(shí)任務(wù)報(bào)錯(cuò)Unexpected error occurred in scheduled task問(wèn)題
相關(guān)文章
如何用java程序(JSch)運(yùn)行遠(yuǎn)程linux主機(jī)上的shell腳本
這篇文章主要介紹了如何用java程序(JSch)運(yùn)行遠(yuǎn)程linux主機(jī)上的shell腳本,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08Java實(shí)現(xiàn)將類數(shù)據(jù)逐行寫(xiě)入CSV文件的方法詳解
這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)將類數(shù)據(jù)逐行寫(xiě)入CSV文件,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以借鑒一下2022-11-11Java結(jié)合uniapp實(shí)現(xiàn)驗(yàn)證碼功能的示例詳解
UniApp 是一個(gè)基于 Vue.js 的跨平臺(tái)應(yīng)用開(kāi)發(fā)框架,允許開(kāi)發(fā)者使用統(tǒng)一的代碼庫(kù)來(lái)構(gòu)建多平臺(tái)應(yīng)用,這篇文章將給大家介紹Java結(jié)合uniapp實(shí)現(xiàn)驗(yàn)證碼功能,文中通過(guò)詳細(xì)的代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-07-07springboot 集成redission 以及分布式鎖的使用詳解
這篇文章主要介紹了springboot 集成redission 以及分布式鎖的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Java的Struts框架中的if/else標(biāo)簽使用詳解
這篇文章主要介紹了Java的Struts框架中的if/else標(biāo)簽使用詳解,Struts是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-12-12基于SpringBoot實(shí)現(xiàn)QQ郵箱驗(yàn)證碼注冊(cè)功能
QQ 郵箱是由騰訊公司推出的一款免費(fèi)郵箱服務(wù),它提供了完整的郵件發(fā)送和接收功能,并且還支持多種郵件格式和附件類型,QQ 郵箱還具有強(qiáng)大的反垃圾郵件功能,可以有效地過(guò)濾垃圾郵件,并保護(hù)用戶隱私和安全,所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)QQ郵箱驗(yàn)證碼注冊(cè)功能2024-11-11Java concurrency集合之ConcurrentSkipListSet_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListSet的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Java連接數(shù)據(jù)庫(kù),及增刪改查的示例
這篇文章主要介紹了Java連接數(shù)據(jù)庫(kù),及增刪改查的示例,幫助大家更好的利用Java處理數(shù)據(jù),感興趣的朋友可以了解下2020-10-10