序言
ThreadPoolExecutor类是jdk1.5之后提供的线程池,在java.util.concurrent包下。
1、ThreadPoolExecutor的继承关系
spring中的ThreadPoolTaskExecutor是其子类。
2、ThreadPoolExecutor的核心参数
int corePoolSize : 核心线程数
int maximumPoolSize :最大线程数
long keepAliveTime :非核心线程的存活时间
TimeUnit unit :keepAliveTime的单位
BlockingQueue
RejectedExecutionHandler handler :当线程池满之后的拒绝策略
3、ThreadPoolExecutor执行任务顺序
4、常用的四种线程池
4.1、CachedThreadPool
可缓存的线程池,该线程池中没有核心线程,非核心线程的数量为Integer.max_value,就是无限大,当有需要时创建线程来执行任务,没有需要时回收线程,适用于耗时少,任务量大的情况
4.2、ScheduledThreadPoolExecutor
周期性执行任务的线程池,按照某种特定的计划执行线程中的任务,有核心线程,但也有非核心线程,非核心线程的大小也为无限大。适用于执行周期性的任务。
其继承关系如下:
4.3、SingleThreadPool
4.4、FixedThreadPool
定长的线程池,有核心线程,核心线程的即为最大的线程数量,没有非核心线程
5、四种拒绝策略
5.1、AbortPolicy
5.2、DisCardPolicy
5.3、DisCardOldSetPolic
5.4、CallerRunsPolicy
直接调用execute来执行当前任务