springBoot @Scheduled多工同時開始執行
導讀 | 這篇文章主要介紹了springBoot @Scheduled實現多個任務同時開始執行,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教 |
@Scheduled多個任務同時開始執行
只需在springBoot啟動類上新增
如下程式碼即可:
@Bean public TaskScheduler taskScheduler() { ThreadPoolTaskScheduler taskExecutor = new ThreadPoolTaskScheduler(); taskExecutor.setPoolSize(50); return taskExecutor; }
@Scheduled多定時任務,重疊執行
@Scheduled如果有兩個定時任務
定時任務重複時,只有一個可以執行。
如下
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()+" 任務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()+" 任務execute2對應的執行緒名: "+curName); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }
通過執行可以看到,列印執行緒名稱為同一個。即如果不手動指定執行緒池,則預設啟動單執行緒,進行執行定時任務。
如果想要多個定時任務重疊執行
需要手動指定執行緒池,如下
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()+" 任務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()+" 任務execute2對應的執行緒名: "+curName); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }
此時,多個定時任務,是不通的執行緒執行,同時,定時任務可以重疊執行。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2851358/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringBoot執行定時任務@ScheduledSpring Boot
- 玩轉SpringBoot之定時任務@Scheduled執行緒池配置Spring Boot執行緒
- SpringBoot 定時任務ScheduledSpring Boot
- springboot定時任務@ScheduledSpring Boot
- 避免DbContext同時在多個執行緒呼叫Context執行緒
- DBeaver同時執行多條insert into報錯處理
- Scheduled 執行緒池實踐執行緒
- 如何在Linux終端同時執行多個Linux命令Linux
- SpringBoot原始碼解析-Scheduled定時器的原理Spring Boot原始碼定時器
- 多執行緒實現多工二執行緒
- 多執行緒實現多工一執行緒
- Python中的多工:多執行緒Python執行緒
- python--多工執行緒Python執行緒
- selenium-grid 有多個節點,但 pytest.main 批次執行用例,每次只有一個節點執行用例,不能同時多個節點執行,要怎樣才能多個節點同時執行AI
- SpringBoot 對多執行緒的支援Spring Boot執行緒
- 單執行緒的JS如何實現多個互動同時進行執行緒JS
- JSRE中的多工與多執行緒JS執行緒
- 從零開始入門 K8s | 理解 RuntimeClass 與使用多容器執行時K8S
- 設定定時器——Tomcat啟動後開始執行定時器Tomcat
- 從零開始瞭解多執行緒知識之開始篇目 -- jvm&volatile執行緒JVM
- springcloud +springboot 社交電子商務-定時任務@ScheduledGCCloudSpring Boot
- springboot配置執行緒池使用多執行緒插入資料Spring Boot執行緒
- 多工處理方式之二:多執行緒執行緒
- IDEA如何同時執行兩個ModulesIdea
- 什麼?一個核同時執行兩個執行緒?執行緒
- 搞懂? Python 多執行緒 多程式(先吃飯再喝湯?還是吃飯喝湯同時進行?)Python執行緒
- SpringBoot @JmsListener(destination = ) 執行時動態修改Spring Boot
- Springboot啟動時執行指定程式碼Spring Boot
- 從零開始學Python(八):Python多執行緒和佇列Python執行緒佇列
- PHP 避免同時執行一個指令碼PHP指令碼
- 使用委託開啟多執行緒(多執行緒深入)執行緒
- @Scheduled 定時任務
- 從零開始瞭解多執行緒 之 深入淺出AQS -- 上執行緒AQS
- 從零開始JVM(一):初探JVM執行時資料區域JVM
- 在Docker中,可以在一個容器中同時執行多個應用程序嗎?Docker
- 開始SpringBoot的學習&springboot概述Spring Boot
- SpringBoot執行原理Spring Boot
- idea執行springboot開源專案GunsIdeaSpring Boot