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執行緒
- 同時多個SQL命令執行的方法SQL
- SpringBoot 定時任務ScheduledSpring Boot
- springboot定時任務@ScheduledSpring Boot
- 使用spring @Scheduled註解執行定時任務、Spring
- C#多執行緒之旅(2):建立和開始執行緒C#執行緒
- 一臺電腦同時執行多個tomcat配置方法Tomcat
- 多執行緒實現多工二執行緒
- 多執行緒實現多工一執行緒
- 同時具備多執行緒和多程式安全的寫日誌工具執行緒
- SpringBoot原始碼解析-Scheduled定時器的原理Spring Boot原始碼定時器
- .NET多執行緒程式設計(1):多工和多執行緒 (轉)執行緒程式設計
- 單例避免多執行緒同時修改同個值從而造成髒資料單例執行緒
- Python中的多工:多執行緒Python執行緒
- 單執行緒的JS如何實現多個互動同時進行執行緒JS
- 如何在Linux終端同時執行多個Linux命令Linux
- 一臺機器同時執行兩個或多個tomcatTomcat
- python--多工執行緒Python執行緒
- Linux開機執行多長時間Linux
- 開始-執行-命令大全
- 多工處理方式之二:多執行緒執行緒
- JSRE中的多工與多執行緒JS執行緒
- 從零開始入門 K8s | 理解 RuntimeClass 與使用多容器執行時K8S
- 從零開始瞭解多執行緒知識之開始篇目 -- jvm&volatile執行緒JVM
- 設定定時器——Tomcat啟動後開始執行定時器Tomcat
- 什麼?一個核同時執行兩個執行緒?執行緒
- 死鎖:多執行緒同時刪除唯一索引上的同一行執行緒索引
- 開始-執行命令的大全
- oracle 中使用批處理檔案,同時執行,多個.sql檔案。OracleSQL
- 同樣SQL同樣執行計劃在不同節點執行時間差很遠SQL
- SpringBoot 對多執行緒的支援Spring Boot執行緒
- @Scheduled 定時任務
- PHP 避免同時執行一個指令碼PHP指令碼
- IDEA如何同時執行兩個ModulesIdea
- springcloud +springboot 社交電子商務-定時任務@ScheduledGCCloudSpring Boot
- 搞懂? Python 多執行緒 多程式(先吃飯再喝湯?還是吃飯喝湯同時進行?)Python執行緒
- springboot配置執行緒池使用多執行緒插入資料Spring Boot執行緒