线程池参数配置
1.根据list大小创建核心线程数 最大不超过5个
int poolSize = Math.min(model.getXProductInfoList().size(), 5);
2.写死
new ThreadPoolExecutor(2, 3, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(10));
CompletableFuture.runAsync(() -> asynProcessXProductRefund(context, param, model), ex);
ex.shutdown();
3.根据cpu核数设置
//单独第一个类 获取cpu核数 times在配置中设置 方便后期修改
Runtime.getRuntime().availableProcessors() * times / 2;
int availableProcessors = new RuntimeHelper().getAvailableProcessors();
int corePoolSize = availableProcessors < 1 ? 1 : availableProcessors; 二分之一 核心线程数
int maximumPoolSize = corePoolSize * 2; 核心线程数
long keepAliveTime = 60L;
TimeUnit unit = TimeUnit.MILLISECONDS;
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat(ThreadConsts.ASSGIN_THREAD_NAME).build();
RejectedExecutionHandler assginRejectPolicy = new AssginRejectPolicy();