线程收敛优雅实践

371 阅读1分钟

线程收敛常规方案

根据线程创建堆栈考量合理性,使用统一线程库

各业务线下掉自己的线程库

基础库怎么使用线程

直接依赖线程库

缺点:线程库更新可能会导致基础库更新

基础库优雅使用线程

基础库内部暴露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);