SpringBoot多線程與任務調(diào)度總結(jié)
一、前言
多線程與任務調(diào)度是java開發(fā)中必須掌握的技能,在springBoot的開發(fā)中,多線程和任務調(diào)度變得越來越簡單。實現(xiàn)方式可以通過實現(xiàn)ApplicationRunner接口,重新run的方法實現(xiàn)多線程。任務調(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("開啟線程.....,");
// 處理用戶手機號
// tmpMUserService.updateOne();
}
/**
* 定時任務 早上0點10分
*/
// @Scheduled(cron = "0 10 0 * * ?")
@Scheduled(cron = "0 0/10 * * * ?") // 每10分鐘刷新
public void hotelTask() throws Exception {
}
}三、java定時任務多種實現(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í)行定時任務!");
}
};
// 延遲5秒后開始執(zhí)行任務,然后每隔2秒執(zhí)行一次
timer.schedule(task, 5000, 2000);
}
}2.使用ScheduledExecutorService
ScheduledExecutorService 是Java 5及以上版本中提供的一個更加強大和靈活的定時任務執(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í)行定時任務!");
}, 5, 2, TimeUnit.SECONDS); // 延遲5秒后開始執(zhí)行,然后每隔2秒執(zhí)行一次
}
}3.使用Spring的@Scheduled注解 (適用于Spring Boot應用)
如果你正在使用Spring Boot,你可以使用@Scheduled注解來輕松地實現(xiàn)定時任務。首先,確保你的Spring Boot應用已經(jīng)啟用了定時任務支持:在主類上添加@EnableScheduling注解。然后,你可以在方法上添加@Scheduled注解來指定任務的執(zhí)行計劃。
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í)行定時任務!");
}
}四、java定時任務應用場景
- 定時發(fā)送通知:在企業(yè)管理系統(tǒng)中,可以設(shè)置定時任務,定期向員工發(fā)送通知,例如會議提醒、任務更新等。
- 定時執(zhí)行報表生成:在財務或銷售部門,可以設(shè)置定時任務,定期生成報表,例如每日銷售報表、月度財務報表等。
- 定時處理訂單:在電商或物流系統(tǒng)中,可以設(shè)置定時任務,自動處理訂單狀態(tài),例如發(fā)貨、確認收貨等。
- 定時清理緩存:對于使用緩存的系統(tǒng),定時清理過期或無效的緩存可以提高系統(tǒng)的性能和穩(wěn)定性。
- 定時備份數(shù)據(jù)庫:類似于其他語言中的例子,Java 程序也可以設(shè)置定時任務,定期備份數(shù)據(jù)庫數(shù)據(jù)。
- 定時啟動或停止服務:在服務器管理中,可以設(shè)置定時任務,自動啟動或停止服務,例如在夜間關(guān)閉一些非必要的服務以節(jié)省資源。
- 定時發(fā)送郵件或短信:Java 程序可以與郵件或短信服務集成,定時發(fā)送郵件或短信通知,例如會議提醒、生日祝福等。
- 定時執(zhí)行批處理任務:對于需要批量處理數(shù)據(jù)的場景,可以設(shè)置定時任務,自動執(zhí)行批處理任務,例如數(shù)據(jù)導入、數(shù)據(jù)導出等。
到此這篇關(guān)于SpringBoot多線程與任務調(diào)度總結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot多線程與任務調(diào)度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Security 構(gòu)建rest服務實現(xiàn)rememberme 記住我功能
這篇文章主要介紹了Spring Security 構(gòu)建rest服務實現(xiàn)rememberme 記住我功能,需要的朋友可以參考下2018-03-03

