springBoot?@Scheduled實現(xiàn)多個任務(wù)同時開始執(zhí)行
@Scheduled多個任務(wù)同時開始執(zhí)行
只需在springBoot啟動類上添加
如下代碼即可:
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskExecutor = new ThreadPoolTaskScheduler();
taskExecutor.setPoolSize(50);
return taskExecutor;
}

@Scheduled多定時任務(wù),重疊執(zhí)行
@Scheduled如果有兩個定時任務(wù)
定時任務(wù)重復時,只有一個可以執(zhí)行。
如下
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
public class MyScheduled {
@Scheduled(cron = "0/5 * * * * ?")
public void execute1(){
String curName = Thread.currentThread().getName() ;
System.out.println("當前時間:"+LocalDateTime.now()+" 任務(wù)execute1對應的線程名: "+curName);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
@Scheduled(cron = "0/5 * * * * ?")
public void execute2(){
String curName = Thread.currentThread().getName() ;
System.out.println("當前時間:"+LocalDateTime.now()+" 任務(wù)execute2對應的線程名: "+curName);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
通過執(zhí)行可以看到,打印線程名稱為同一個。即如果不手動指定線程池,則默認啟動單線程,進行執(zhí)行定時任務(wù)。
如果想要多個定時任務(wù)重疊執(zhí)行
需要手動指定線程池,如下
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
@EnableScheduling
public class MyScheduled {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(50);
return taskScheduler;
}
@Scheduled(cron = "0/5 * * * * ?")
public void execute1(){
String curName = Thread.currentThread().getName() ;
System.out.println("當前時間:"+LocalDateTime.now()+" 任務(wù)execute1對應的線程名: "+curName);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
@Scheduled(cron = "0/5 * * * * ?")
public void execute2(){
String curName = Thread.currentThread().getName() ;
System.out.println("當前時間:"+LocalDateTime.now()+" 任務(wù)execute2對應的線程名: "+curName);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
此時,多個定時任務(wù),是不通的線程執(zhí)行,同時,定時任務(wù)可以重疊執(zhí)行。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis/mybatis-plus模糊查詢語句特殊字符轉(zhuǎn)義攔截器的實現(xiàn)
在開發(fā)中,我們通常會遇到這樣的情況。用戶在錄入信息是錄入了‘%’,而在查詢時無法精確匹配‘%’。究其原因,‘%’是MySQL的關(guān)鍵字,如果我們想要精確匹配‘%’,那么需要對其進行轉(zhuǎn)義,本文就詳細的介紹一下2021-11-11
IDEA(2022.2)搭建Servlet基本框架超詳細步驟
這篇文章主要給大家介紹了關(guān)于IDEA(2022.2)搭建Servlet基本框架超詳細步驟,Servlet容器負責Servlet和客戶的通信以及調(diào)用Servlet的方法,Servlet和客戶的通信采用"請求/響應"的模式,需要的朋友可以參考下2023-10-10
springboot2.x只需兩步快速整合log4j2的方法
這篇文章主要介紹了springboot2.x只需兩步快速整合log4j2的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05
使用MyBatisPlus自動生成代碼后tomcat運行報錯的問題及解決方法
這篇文章主要介紹了使用MyBatisPlus自動生成代碼后tomcat運行報錯的問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
Java返回文件時為圖片或pdf等設(shè)置在線預覽或下載功能
這篇文章主要介紹了Java返回文件時為圖片或pdf等設(shè)置在線預覽或下載功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01

