国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Spring Boot 配置和使用多線程池的實現

2024-07-14 08:41:11
字體:
來源:轉載
供稿:網友

某些情況下,我們需要在項目中對多種任務分配不同的線程池進行執行。從而通過監控不同的線程池來控制不同的任務。為了達到這個目的,需要在項目中配置多線程池。

spring boot 提供了簡單高效的線程池配置和使用方案。

配置

首先是配置線程池的bean交給spring 管理:

@Configurationpublic class TaskExecutePool { @Bean(name ="threadPoolA")public ThreadPoolTaskExecutormyTaskAsyncPool() {ThreadPoolTaskExecutor executor =new ThreadPoolTaskExecutor();  executor.setCorePoolSize(4);  executor.setMaxPoolSize(8);  executor.setQueueCapacity(100);  executor.setKeepAliveSeconds(60);  executor.setThreadNamePrefix("Pool-A");  executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());  executor.initialize();  return executor; }@Bean(name ="ThreadPoolB")public ThreadPoolTaskExecutorAsyncPoolB() {ThreadPoolTaskExecutor executor =new ThreadPoolTaskExecutor();  executor.setCorePoolSize(2);  executor.setMaxPoolSize(4);  executor.setQueueCapacity(8);  executor.setKeepAliveSeconds(60);  executor.setThreadNamePrefix("Pool-B");  //當任務數量超過MaxPoolSize和QueueCapacity時使用的策略,該策略是又調用任務的線程執行  executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());  executor.initialize();  return executor; }}

使用

使用線程只需要在執行方法上加上注釋,同時該方法的類必須被定義為bean,交由spring管理。

可以在類上使用注解@Component、@Service等

@Async(value="ThreadPoolA")public void taskA(){ ...}

查看線程活躍數:

@Autowired private ThreadPoolTaskExecutor threadPoolA;//變量名稱為定義的線程池bean定義的name屬性名。public void checkAvtiveThreadNum() {  int num = threadPoolA.getActiveCount();}

當然還有其他一些方法,這里不再舉例。

線程池各屬性理解:

corePoolSize:表示線程池核心線程,正常情況下開啟的線程數量。

queueCapacity:當核心線程都在跑任務,還有多余的任務會存到此處。

maxPoolSize:如果queueCapacity存滿了,還有任務就會啟動更多的線程,直到線程數達到maxPoolSize。如果還有任務,則根據拒絕策略進行處理。

拒絕策略有多種:

  1. 由任務調用線程執行
  2. 拋異常
  3. 多余的直接拋棄
  4. 根據FIFO(先進先出)拋棄隊列里任務

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马龙县| 日土县| 新野县| 丽江市| 建瓯市| 洛宁县| 大余县| 阿勒泰市| 惠东县| 桓台县| 大足县| 乐山市| 东城区| 商城县| 泸水县| 藁城市| 察隅县| 宜州市| 舞阳县| 上蔡县| 建德市| 西昌市| 鄱阳县| 曲周县| 永靖县| 松滋市| 两当县| 福安市| 淄博市| 福清市| 天门市| 连州市| 澄城县| 沙田区| 米易县| 阿拉善右旗| 宣恩县| 中西区| 伊吾县| 沂水县| 墨竹工卡县|