线程池的核心类:ThreadPoolExecutor ,类图如下:
(I:代表接口,C:代表实现类)
I:Executor
I:ExecutorService
C:AbstractExecutorService
C:ThreadPoolExecutor
构造函数:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler);
每个参数含义:
参数 | 含义 |
---|---|
int corePoolSize | 核心线程池的大小 |
int maximumPoolSize | 线程池最大的线程数量 |
long keepAliveTime | 非核心线程能够空闲的最长时间 |
TimeUnit unit | 时间单位,和keepAliveTime配合使用 |
BlockingQueue<Runnable> workQueue | 缓存队列,用来存放等待被执行的任务 |
ThreadFactory threadFactory | 线程工厂,用来创建线程,默认new Executors.DefaultThreadFactory() |
RejectedExecutionHandler handler | 线程拒绝策略;触发条件:workQueue已满且线程数已达到maximum |
线程池基于以上参数的内部执行逻辑:
先画张图出来, 有空了第一时间过来把文章写完
未完待续............