2021122301 - 线程池核心类
线程池核心类
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
}
# BlockingQueue
# 任务队列(阻塞队列)用于保存等待执行的任务的阻塞队列, 有以下三种阻塞队列
SynchronousQueue,LinkedBlockingDeque,ArrayBlockingQueue
SynchronousQueue:一个不存储元素的阻塞队列。可以理解为没有阻塞队列,如果超过核心线程数量时,则直接创建非核心线程, 除非超过maxMumPoolSize报Java.util.concurrent.RejectedExecutionException
LinkedBlockingQuene: 可以无界,可以有界。 是一个基于链表的阻塞队列,吞吐量通常高于ArrayBlockingQueue(LinkedBlockingQuene 使用两个锁来控制线程访问,这样队列可以同时进行put和take的操作,因此通途量相对高),静态工厂方法Executors.newFilxedThreadPool()使用这个队列
ArrayListBlockingQueue是有界的,是一个有界缓存的阻塞队列
new LinkedBlockingQueue<>(30) //有界
new LinkedBlockingQueue<>() //无界

浙公网安备 33010602011771号