线程池的处理流程
创建线程池的方法
创建线程池的方法如下:
public ThreadPoolExecutor(
int corePoolSize,//核心线程数量
int maximumPoolSize,//线程池最大数量
long keepAliveTime,//线程存活时间
TimeUnit unit,//时间单位
BlockingQueue runnableTaskQueue,//任务队列
ThreadFactory threadFactory,//线程工厂
RejectedExecutionHandler handler//拒绝策略
);
参数详解
- corePoolSize:可同时运行的最小线程数量。
- maximumPoolSize:线程池允许创建的最大线程数量。
- keepAliveTime:核心线程外的其他线程空闲的最大时间,超过就销毁。
- unit:时间单位。
runnableTaskQueue:用于保存等待执行的任务的阻塞队列。
- ArrayBlockingQueue: 基于数组结构的有界阻塞队列,按先进先出原则对元素进行排序。
- LinkedBlockingQueue:基于链表结构的阻塞队列,此队列按先进先出原则排序元素,吞吐量通常要高于ArrayBlockingQueue。
- SynchronousQueue:不存储元素的阻塞队列。每个插入操作必须等到另一个线程调用移除操作,否则插入操作一直处于阻塞状态,吞吐量通常要高于Linked-BlockingQueue。
- PriorityBlockingQueue:具有优先级的无限阻塞队列。