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

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

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

某些情況下,我們需要在項(xiàng)目中對(duì)多種任務(wù)分配不同的線程池進(jìn)行執(zhí)行。從而通過監(jiān)控不同的線程池來控制不同的任務(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ù)量超過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:表示線程池核心線程,正常情況下開啟的線程數(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)文章

  • Java8到Java19的一些變化分析詳解

    Java8到Java19的一些變化分析詳解

    這篇文章主要為大家介紹了Java8到Java19的一些變化分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Java Calendar類的使用總結(jié)實(shí)例

    Java Calendar類的使用總結(jié)實(shí)例

    這篇文章主要介紹了Java Calendar類的使用總結(jié)實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring使用@Filter注解創(chuàng)建自定義過濾器

    Spring使用@Filter注解創(chuàng)建自定義過濾器

    Spring 中鮮為人知但非常有用的注解之一是 @Filter,它支持自定義過濾器,下面我們就來深入研究一下如何使用 Spring 的 @Filter 注解來創(chuàng)建自定義過濾器吧
    2023-11-11
  • java通過RESTful API實(shí)現(xiàn)兩個(gè)項(xiàng)目之間相互傳輸數(shù)據(jù)

    java通過RESTful API實(shí)現(xiàn)兩個(gè)項(xiàng)目之間相互傳輸數(shù)據(jù)

    一些特殊場(chǎng)景中,兩個(gè)項(xiàng)目發(fā)布在不同的服務(wù)器,并且由于服務(wù)器限制特殊情況ip無法相通時(shí)進(jìn)行開放接口方式進(jìn)行數(shù)據(jù)傳輸,下面我們就來看看java通過RESTful API實(shí)現(xiàn)這一需求吧
    2025-09-09
  • springboot集成JWT實(shí)現(xiàn)身份認(rèn)證(權(quán)鑒)的方法步驟

    springboot集成JWT實(shí)現(xiàn)身份認(rèn)證(權(quán)鑒)的方法步驟

    本文主要介紹了springboot集成JWT實(shí)現(xiàn)身份認(rèn)證(權(quán)鑒)的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • SpringBoot壓縮json并寫入Redis的示例代碼

    SpringBoot壓縮json并寫入Redis的示例代碼

    由于業(yè)務(wù)需要,存入redis中的緩存數(shù)據(jù)過大,占用了10+G的內(nèi)存,內(nèi)存作為重要資源,需要優(yōu)化一下大對(duì)象緩存,所以我們需要對(duì)json進(jìn)行壓縮,本文給大家介紹了SpringBoot如何壓縮Json并寫入redis,需要的朋友可以參考下
    2024-08-08
  • Java輕松掌握面向?qū)ο蟮娜筇匦苑庋b與繼承和多態(tài)

    Java輕松掌握面向?qū)ο蟮娜筇匦苑庋b與繼承和多態(tài)

    本文主要講述的是面向?qū)ο蟮娜筇匦裕悍庋b,繼承,多態(tài),內(nèi)容含括從封裝到繼承再到多態(tài)的所有重點(diǎn)內(nèi)容以及使用細(xì)節(jié)和注意事項(xiàng),內(nèi)容有點(diǎn)長(zhǎng),請(qǐng)大家耐心看完
    2022-05-05
  • SpringBoot全局異常處理方式

    SpringBoot全局異常處理方式

    本文詳細(xì)介紹了Spring?Boot中異常處理的多種方案,包括基于請(qǐng)求轉(zhuǎn)發(fā)、異常處理器、過濾器等方式,并對(duì)其特點(diǎn)、實(shí)現(xiàn)方式和適用場(chǎng)景進(jìn)行了詳細(xì)介紹,作者推薦了基于請(qǐng)求轉(zhuǎn)發(fā)和異常處理器+請(qǐng)求轉(zhuǎn)發(fā)補(bǔ)充的方案,認(rèn)為它們能實(shí)現(xiàn)統(tǒng)一的全局異常處理,并能自定義統(tǒng)一響應(yīng)信息格式
    2024-12-12
  • Java volatile如何實(shí)現(xiàn)禁止指令重排

    Java volatile如何實(shí)現(xiàn)禁止指令重排

    這篇文章主要介紹了Java volatile如何實(shí)現(xiàn)禁止指令重排,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot中@Scheduled()注解以及cron表達(dá)式詳解

    SpringBoot中@Scheduled()注解以及cron表達(dá)式詳解

    這篇文章主要介紹了SpringBoot中@Scheduled()注解以及cron表達(dá)式詳解,@Scheduled注解是Spring Boot提供的用于定時(shí)任務(wù)控制的注解,主要用于控制任務(wù)在某個(gè)指定時(shí)間執(zhí)行,或者每隔一段時(shí)間執(zhí)行,需要的朋友可以參考下
    2023-08-08

最新評(píng)論