动态创建线程池参数
/**
*获取当前机器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());