91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-27 08:45:11 來源:腳本之家 閱讀:189 作者:阿懶土靈 欄目:編程語言

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

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

配置

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

@Configuration

public 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(先進先出)拋棄隊列里任務

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安福县| 姚安县| 宣汉县| 板桥市| 越西县| 高台县| 红河县| 弥渡县| 敦煌市| 化州市| 姜堰市| 股票| 枝江市| 高邮市| 富源县| 桂阳县| 镇赉县| 瑞丽市| 夏河县| 青龙| 吴桥县| 沁阳市| 青川县| 台南县| 锦州市| 昌图县| 芷江| 壤塘县| 巴南区| 黄梅县| 胶州市| 娄烦县| 正宁县| 什邡市| 集安市| 高邑县| 巍山| 无棣县| 吉木萨尔县| 洞口县| 迁安市|