线程收敛常规方案
根据线程创建堆栈考量合理性,使用统一线程库
各业务线下掉自己的线程库
基础库怎么使用线程
直接依赖线程库
缺点:线程库更新可能会导致基础库更新
基础库优雅使用线程
基础库内部暴露API:setExecutor
初始化的时候注入统一的线程库
统一线程库
区分任务类型:IO、CPU密集型
IO密集型任务不消耗CPU,核心池大小可以很大
CPU密集型任务:核心池大小和CPU核心数相关
private int CPUCOUNT = Runtime.getRuntime().availableProcessors();
private ThreadPoolExecutor cpuExecutor = new ThreadPoolExecutor(CPUCOUNT, CPUCOUNT,
30, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(), sThreadFactory);
private ThreadPoolExecutor iOExecutor = new ThreadPoolExecutor(64, 64,
30, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(), sThreadFactory);