充分利用CPU多核,每个内核不闲置
线程池线程数--->基于Ncpu核数
线程任务------计算密集型
-------IO密集型
计算密集型,线程数=CPU核数
--------------CPU1,没有IO等待,一直计算执行繁忙
--------------CPU2,没有IO等待,一直计算执行繁忙
IO密集型,线程数=CPU核数/(1-阻塞系数),
当线程任务处于IO状态,线程阻塞等待状态,CPU闲置,可以调度等待线程执行,提高效率
封装
Executor new fixedthreadpool -----------| |
Executor new signalthreadpool -----------| -------------------threadpoolexecutor (new LinkedBlockingQueue)
Executor new cachedthreadpool ----------|
Executor创建线程池内部调用threadpoolexecutor,产生的问题LinkedBlockingQueue队列默认Integer.maxvalue无上限,会将内存占满,-->OOM
Integer.max_value,2的31次方,20多亿
threadpoolexecutor服务类bean生命周期,construct构造线程池对象,init初始化--无,destroy--shutdown()