亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

SpringBoot2線程池定義使用方法解析

發布時間:2020-09-15 08:04:59 來源:腳本之家 閱讀:171 作者:趙小胖0914 欄目:編程語言

我們都知道spring只是為我們簡單的處理線程池,每次用到線程總會new 一個新的線程,效率不高,所以我們需要自定義一個線程池。

定義線程池

@Slf4j
@EnableAsync
@Configuration
public class AsyncExecutorConfig implements AsyncConfigurer {

  @Bean
  public ThreadPoolTaskExecutor asyncServiceExecutor() {
    //返回可用處理器的虛擬機的最大數量不小于1
    int cpu = Runtime.getRuntime().availableProcessors();
    log.info("start asyncServiceExecutor cpu : {}", cpu);
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    //配置核心線程數
    executor.setCorePoolSize(cpu);
    //配置最大線程數
    executor.setMaxPoolSize(cpu);
    //配置隊列大小
    executor.setQueueCapacity(50);
    //用來設置線程池關閉的時候等待所有任務都完成再繼續銷毀其他的Bean
    executor.setWaitForTasksToCompleteOnShutdown(true);
    //設置線程池中任務的等待時間,如果超過這個時候還沒有銷毀就強制銷毀,以確保應用最后能夠被關閉,而不是阻塞住
    executor.setAwaitTerminationSeconds(60);
    //配置線程池中的線程的名稱前綴
    executor.setThreadNamePrefix("async-service-");
    // rejection-policy:當pool已經達到max size的時候,如何處理新任務
    // CALLER_RUNS:不在新線程中執行任務,而是有調用者所在的線程來執行
    // 使用預定義的異常處理類
    executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
    //執行初始化
    executor.initialize();
    return executor;
  }

  @Override
  public Executor getAsyncExecutor() {
    return asyncServiceExecutor();
  }

  @Override
  public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
    return (throwable, method, objects) -> {
      StringBuilder sb = new StringBuilder();
      for (Object param : objects) {
        sb.append(param).append(",");
      }
      log.error("Exception message - {},Method name - {},Parameter value - {}", throwable.getMessage(), method.getName(), sb.toString());
    };

  }
}

如何使用

@Autowired  
private ThreadPoolTaskExecutor threadPoolTaskExecutor;

public void test(){
 CompletableFuture<Void> userFuture = CompletableFuture.runAsync(() -> System.out.println(111), threadPoolTaskExecutor);
}

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

向AI問一下細節

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

AI

余江县| 新昌县| 砚山县| 兴国县| 连城县| 宽城| 广宁县| 闽侯县| 新民市| 梁河县| 从化市| 海林市| 长寿区| 科技| 图们市| 西和县| 西乌珠穆沁旗| 枝江市| 萨嘎县| 原平市| 灯塔市| 武城县| 樟树市| 红安县| 鱼台县| 合山市| 孟州市| 彰武县| 庄浪县| 华蓥市| 宁德市| 江城| 惠来县| 安溪县| 松溪县| 临夏市| 建宁县| 太保市| 江源县| 开平市| 温泉县|