SpringBoot多線程與任務(wù)調(diào)度總結(jié)
一、前言
多線程與任務(wù)調(diào)度是java開發(fā)中必須掌握的技能,在springBoot的開發(fā)中,多線程和任務(wù)調(diào)度變得越來越簡單。實(shí)現(xiàn)方式可以通過實(shí)現(xiàn)ApplicationRunner接口,重新run的方法實(shí)現(xiàn)多線程。任務(wù)調(diào)度則可以使用@Scheduled注解
二、使用示例
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class ToolServiceThread implements ApplicationRunner {
@Autowired
private TmpMUserService tmpMUserService;
@Override
public void run(ApplicationArguments args) throws Exception {
log.info("開啟線程.....,");
// 處理用戶手機(jī)號
// tmpMUserService.updateOne();
}
/**
* 定時(shí)任務(wù) 早上0點(diǎn)10分
*/
// @Scheduled(cron = "0 10 0 * * ?")
@Scheduled(cron = "0 0/10 * * * ?") // 每10分鐘刷新
public void hotelTask() throws Exception {
}
}三、java定時(shí)任務(wù)多種實(shí)現(xiàn)方式

使用java.util.Timer類
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("執(zhí)行定時(shí)任務(wù)!");
}
};
// 延遲5秒后開始執(zhí)行任務(wù),然后每隔2秒執(zhí)行一次
timer.schedule(task, 5000, 2000);
}
}2.使用ScheduledExecutorService
ScheduledExecutorService 是Java 5及以上版本中提供的一個(gè)更加強(qiáng)大和靈活的定時(shí)任務(wù)執(zhí)行器。
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorExample {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(() -> {
System.out.println("執(zhí)行定時(shí)任務(wù)!");
}, 5, 2, TimeUnit.SECONDS); // 延遲5秒后開始執(zhí)行,然后每隔2秒執(zhí)行一次
}
}3.使用Spring的@Scheduled注解 (適用于Spring Boot應(yīng)用)
如果你正在使用Spring Boot,你可以使用@Scheduled注解來輕松地實(shí)現(xiàn)定時(shí)任務(wù)。首先,確保你的Spring Boot應(yīng)用已經(jīng)啟用了定時(shí)任務(wù)支持:在主類上添加@EnableScheduling注解。然后,你可以在方法上添加@Scheduled注解來指定任務(wù)的執(zhí)行計(jì)劃。
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@EnableScheduling
public class ScheduledTasks {
@Scheduled(fixedRate = 5000) // 每隔5秒執(zhí)行一次
public void doSomething() {
System.out.println("執(zhí)行定時(shí)任務(wù)!");
}
}四、java定時(shí)任務(wù)應(yīng)用場景
- 定時(shí)發(fā)送通知:在企業(yè)管理系統(tǒng)中,可以設(shè)置定時(shí)任務(wù),定期向員工發(fā)送通知,例如會議提醒、任務(wù)更新等。
- 定時(shí)執(zhí)行報(bào)表生成:在財(cái)務(wù)或銷售部門,可以設(shè)置定時(shí)任務(wù),定期生成報(bào)表,例如每日銷售報(bào)表、月度財(cái)務(wù)報(bào)表等。
- 定時(shí)處理訂單:在電商或物流系統(tǒng)中,可以設(shè)置定時(shí)任務(wù),自動(dòng)處理訂單狀態(tài),例如發(fā)貨、確認(rèn)收貨等。
- 定時(shí)清理緩存:對于使用緩存的系統(tǒng),定時(shí)清理過期或無效的緩存可以提高系統(tǒng)的性能和穩(wěn)定性。
- 定時(shí)備份數(shù)據(jù)庫:類似于其他語言中的例子,Java 程序也可以設(shè)置定時(shí)任務(wù),定期備份數(shù)據(jù)庫數(shù)據(jù)。
- 定時(shí)啟動(dòng)或停止服務(wù):在服務(wù)器管理中,可以設(shè)置定時(shí)任務(wù),自動(dòng)啟動(dòng)或停止服務(wù),例如在夜間關(guān)閉一些非必要的服務(wù)以節(jié)省資源。
- 定時(shí)發(fā)送郵件或短信:Java 程序可以與郵件或短信服務(wù)集成,定時(shí)發(fā)送郵件或短信通知,例如會議提醒、生日祝福等。
- 定時(shí)執(zhí)行批處理任務(wù):對于需要批量處理數(shù)據(jù)的場景,可以設(shè)置定時(shí)任務(wù),自動(dòng)執(zhí)行批處理任務(wù),例如數(shù)據(jù)導(dǎo)入、數(shù)據(jù)導(dǎo)出等。
到此這篇關(guān)于SpringBoot多線程與任務(wù)調(diào)度總結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot多線程與任務(wù)調(diào)度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java JSch遠(yuǎn)程執(zhí)行Shell命令的方法
本文主要介紹了Java JSch遠(yuǎn)程執(zhí)行Shell命令,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
jar包在windows后臺運(yùn)行,通過.bat文件實(shí)現(xiàn)
文章主要講解了在Windows后臺運(yùn)行JAR包的方法,通過創(chuàng)建啟動(dòng).bat和停止.bat文件,使用javaw方式運(yùn)行JAR包,可以在關(guān)閉cmd界面后仍然保持程序運(yùn)行,提供了啟動(dòng).bat和停止.bat的具體內(nèi)容2026-04-04
SpringBoot實(shí)現(xiàn)國際化的配置方法
隨著一個(gè)系統(tǒng)的規(guī)模做上去之后,國際化的問題就會逐漸暴露出來,簡單來說,當(dāng)你的系統(tǒng)面對的不再是本國的用戶,而要面臨海外用戶時(shí),系統(tǒng)必須要能適配國際化,所以本文給大家介紹了SpringBoot實(shí)現(xiàn)國際化的配置方法,需要的朋友可以參考下2025-11-11
Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源
這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
SpringBoot定時(shí)任務(wù)實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)同步全過程
文章詳細(xì)介紹了從簡單到企業(yè)級數(shù)據(jù)庫同步需求的技術(shù)方案,包括選型、實(shí)現(xiàn)步驟、優(yōu)化方案、異常處理策略、生產(chǎn)環(huán)境配置建議等2025-12-12
Java中的 FilterInputStream簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
FilterInputStream 的作用是用來“封裝其它的輸入流,并為它們提供額外的功能”。接下來通過本文給大家分享Java中的 FilterInputStream簡介,感興趣的朋友一起學(xué)習(xí)吧2017-05-05
Spring Boot Feign服務(wù)調(diào)用之間帶token問題
這篇文章主要介紹了Spring Boot Feign服務(wù)調(diào)用之間帶token的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

