package com.bonade.utils; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 每次獲取生成新的線程池 * @author xiejianwei * @description 適用於有狀態的線程處理 */ public class PrototypeThreadPoolUtil { //根據cpu的數量動態的配置核心線程數和最大線程數 private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors(); //核心線程數 = CPU核心數 + 1 private static final int CORE_POOL_SIZE = CPU_COUNT + 1; //線程池最大線程數 = CPU核心數 * 2 + 1 private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 10; //非核心線程閒置時間 = 超時1s private static final int KEEP_ALIVE = 1; // 隊列容量 private static final int CAPACITY = 500; public static ThreadPoolExecutor getInstance() { return new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(CAPACITY), Executors.defaultThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy()); } }
線程池工具類:PrototypeThreadPoolUtil
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.