简单纪要:线程池的使用
ThreadPoolExecutor类
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
corePoolSize:核心线程数:核心线程会一直存活,即使不存在任务,并核心线程数不能为0,非则抛出异常(IllegalArgumentException),核心线程个数一般为:CPU数 * 2;
maximumPoolSize:线程最大数:线程池所能创造最大个数,
a, 当前线程数 >= 核心核心线程数 创造新线程继续执行;
b, 当前线程数 = 线程最大数 抛出异常,拒绝处理任务;
keepAliveTime:线程空闲时间 当线程空闲时间达到 keepAliveTime时间时,当前线程会被杀死,直到达到核心线程数;
workQueue:线程池所使用的缓冲队列;
常见四种线程池
1) fixthreadPool: 固定数目线程池,正规的开发线程,多用于服务器,核心线程是没有超时机制的,队列没有大小,除非线程关闭了,核心线程才会被回收;
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。2)cacheThreadPool:只有非核心线程,最大线程数很大,他会为每一个任务添加一个线程,但是有超时时间,如果线程空闲时间 > 60s,会被回收;
3)singleThreadPool: 只有一个核心线程的线程池;
4)scheduledThreadPool:是一个有延期执行和周期重复执行的线程池,他的线程池固定,但其他线程随机创建,只要空闲,立即回收;

更多精彩