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<>()  //无界


posted @ 2025-03-20 19:39  钱塘江畔  阅读(11)  评论(0)    收藏  举报