参考文档
参数说明
- corePoolSize => 线程池核心线程最大数量
- maximumPoolSize => 线程池最大数量(线程池中能拥有最多线程数)
- keepAliveTime => 空闲线程存活时间(没有超过核心线程数则不销毁)
- unit => 时间单位
- workQueue => 线程池所使用的缓冲队列(用于缓存任务、阻塞队列)
- threadFactory => 线程池创建线程使用的工厂
- handler => 线程池对拒绝任务的处理策略
常用的线程池
- CachedThreadPool:创建非核心线程来完成任务(核心线程和队列均为0) 适用于IO密集型
- SingleThreadPool: 创建1个核心线程(无限队列)
- Fix:创建固定的核心线程数(无限队列) 适用于CPU密集型
LinkedBlockingQueue:可以指定容量大小,默认为Integer.MAX
SynchronousQueue: 容量为0
线程池工作流程
拒绝策略
- AbortPolicy
默认拒绝策略,丢弃任务,抛出异常RejectedExecutionException - DiscardPolicy
丢弃任务,不抛出异常 - DiscardOldestPolicy
丢弃队列最早的未处理任务,然后重新尝试执行任务 - CallerRunsPolicy
由调用线程处理该任务