创建线程池参数

动态创建线程池参数

/**
 *获取当前机器CPU数量
 */
private static final int CPU = Runtime.getRuntime().availableProcessors();
/**
 *核心线程数(默认线程数)
 */
private static final int CORE_POOL_SIZE = CPU;
/**
 *最大线程数
 */
private static final int MAX_POOL_SIZE = CPU * 2;
/**
 *允许线程空闲时间(单位:默认为秒)
 */
private static final int KEEP_ALIVE_TIME = 60;
/**
 *缓冲队列数
 */
private static final int QUEUE_CAPACITY = 200;
/**
 *线程池名前缀
 */
private static final String THREAD_NAME_PREFIX = "wflTaskExecutor-";

创建线程池使用ThreadPoolExecutor

/**
     * 核心线程 CORE_POOL_SIZE 最大线程 MAX_POOL_SIZE 保活时间 KEEP_ALIVE_TIME
     * 存储队列 QUEUE_CAPACITY 有守护线程 拒绝策略:将超负荷任务回退到调用者
     */
    private static ExecutorService executor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE,
            KEEP_ALIVE_TIME, TimeUnit.SECONDS, new LinkedBlockingQueue<>(QUEUE_CAPACITY),
            new ThreadFactoryBuilder().setNameFormat(THREAD_NAME_PREFIX).setDaemon(true).build(),
            new ThreadPoolExecutor.CallerRunsPolicy());

你可能感兴趣的:(多线程)