欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot 配置和使用多線程池的實(shí)現(xiàn)

 更新時(shí)間:2018年06月08日 09:20:56   作者:阿懶土靈  
這篇文章主要介紹了Spring Boot 配置和使用多線程池的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

某些情況下,我們需要在項(xiàng)目中對(duì)多種任務(wù)分配不同的線程池進(jìn)行執(zhí)行。從而通過(guò)監(jiān)控不同的線程池來(lái)控制不同的任務(wù)。為了達(dá)到這個(gè)目的,需要在項(xiàng)目中配置多線程池。

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

配置

首先是配置線程池的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");
  //當(dāng)任務(wù)數(shù)量超過(guò)MaxPoolSize和QueueCapacity時(shí)使用的策略,該策略是又調(diào)用任務(wù)的線程執(zhí)行
  executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

  executor.initialize();

  return executor;

 }

}

使用

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

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

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

查看線程活躍數(shù):

@Autowired
 private ThreadPoolTaskExecutor threadPoolA;//變量名稱為定義的線程池bean定義的name屬性名。

public void checkAvtiveThreadNum() {
  int num = threadPoolA.getActiveCount();
}

當(dāng)然還有其他一些方法,這里不再舉例。

線程池各屬性理解:

corePoolSize:表示線程池核心線程,正常情況下開(kāi)啟的線程數(shù)量。

queueCapacity:當(dāng)核心線程都在跑任務(wù),還有多余的任務(wù)會(huì)存到此處。

maxPoolSize:如果queueCapacity存滿了,還有任務(wù)就會(huì)啟動(dòng)更多的線程,直到線程數(shù)達(dá)到maxPoolSize。如果還有任務(wù),則根據(jù)拒絕策略進(jìn)行處理。

拒絕策略有多種:

  1. 由任務(wù)調(diào)用線程執(zhí)行
  2. 拋異常
  3. 多余的直接拋棄
  4. 根據(jù)FIFO(先進(jìn)先出)拋棄隊(duì)列里任務(wù)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Java編寫GUI對(duì)話框的教程

    使用Java編寫GUI對(duì)話框的教程

    這篇文章主要介紹了使用Java編寫GUI對(duì)話框的教程,是Java圖形化編程中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • MyBatis查詢數(shù)據(jù)庫(kù)語(yǔ)句總結(jié)

    MyBatis查詢數(shù)據(jù)庫(kù)語(yǔ)句總結(jié)

    MyBatis是一種持久化框架,可以與許多不同類型的關(guān)系型數(shù)據(jù)庫(kù)連接,下面這篇文章主要給大家介紹了關(guān)于MyBatis查詢數(shù)據(jù)庫(kù)語(yǔ)句的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 你不知道的 IDEA Debug調(diào)試小技巧(小結(jié))

    你不知道的 IDEA Debug調(diào)試小技巧(小結(jié))

    這篇文章主要介紹了你不知道的 IDEA Debug調(diào)試小技巧(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Java中Swing類實(shí)例講解

    Java中Swing類實(shí)例講解

    這篇文章主要介紹了Java中Swing類實(shí)例講解,文中用代碼實(shí)例講解的很清楚,有需要的同學(xué)可以研究下
    2021-02-02
  • IDEA2020.2.3

    IDEA2020.2.3 "reading maven projects"卡住的問(wèn)題

    這篇文章主要介紹了IDEA2020.2.3 "reading maven projects"卡住的問(wèn)題及問(wèn)題原因探究,通過(guò)多種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-10-10
  • SpringBoot利用validation實(shí)現(xiàn)優(yōu)雅的校驗(yàn)參數(shù)

    SpringBoot利用validation實(shí)現(xiàn)優(yōu)雅的校驗(yàn)參數(shù)

    數(shù)據(jù)的校驗(yàn)是交互式網(wǎng)站一個(gè)不可或缺的功能,如果數(shù)據(jù)庫(kù)中出現(xiàn)一個(gè)非法的郵箱格式,會(huì)讓運(yùn)維人員頭疼不已。本文將介紹如何利用validation來(lái)對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • 完美解決idea突然間很卡的問(wèn)題

    完美解決idea突然間很卡的問(wèn)題

    這篇文章主要介紹了完美解決idea突然間很卡的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java獲取項(xiàng)目路徑方式System.getProperty(“user.dir“)

    Java獲取項(xiàng)目路徑方式System.getProperty(“user.dir“)

    這篇文章主要介紹了Java獲取項(xiàng)目路徑方式System.getProperty(“user.dir“),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • hibernate-validator如何使用校驗(yàn)框架

    hibernate-validator如何使用校驗(yàn)框架

    高效、合理的使用hibernate-validator校驗(yàn)框架可以提高程序的可讀性,以及減少不必要的代碼邏輯,本文主要介紹了hibernate-validator如何使用校驗(yàn)框架,感興趣的可以了解一下
    2022-04-04
  • Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法

    Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法

    spring cloud用上了配置中心,就一個(gè)boostrap.yml,本文就來(lái)介紹一下Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法,感興趣的可以了解一下
    2024-03-03

最新評(píng)論