线程池 -- 推荐线程池 ThreadPoolExecutor
ThreadPoolExecutor是阿里巴巴 JAVA 编码规范里面推荐的使用线程池的正确姿势
它提供了四个构造方法:
我们以最后一个构造方法(参数最多的那个),对其参数进行解释:
public ThreadPoolExecutor(int corePoolSize, // 1
int maximumPoolSize, // 2
long keepAliveTime, // 3
TimeUnit unit, // 4
BlockingQueue<Runnable> workQueue, // 5
ThreadFactory threadFactory, // 6
RejectedExecutionHandler handler ) { //7
if (corePoolSize < 0 ||
maximumPoolSize <= 0 ||
maximumPoolSize < corePoolSize ||
keepAliveTime < 0)
throw new IllegalArgumentException();
if (workQueue == null || threadFactory == null || handler == null)
throw new NullPointerException();
this.corePoolSize = corePoolSize;
this.maximumPoolSize = maximumPoolSize;
this.workQueue = workQueue;
this.keepAliveTime = unit.toNanos(keepAliveTime);
this.threadFactory = threadFactory;
this.handler = handler;
}
序号 | 名称 | 类型 | 含义 |
---|---|---|---|
1 | corePoolSize | int | 核心线程数,能够同时执行的任务数量 |
2 | maximumPoolSize | int | 除去缓冲队列中等待的任务,最大能容纳的任务 数(其实是包括了核心线程池数量) |
3 | keepAliveTime | long | 超出workQueue的等待任务的存活时间,就是指maximumPoolSize里面的等待任务的存活时间 |
4 | unit | TimeUnit | 时间单位 |
5 | workQueue | BlockingQueue<Runnable> | 永远不会满,一般选择没有容量上限的队列 |
6 | threadFactory | ThreadFactory | 创建线程的工厂,使用系统默认的类 |
7 | handler | RejectedExecutionHandler | 当任务数超过maximumPoolSize时,对任务的处理策略,默认策略是拒绝添加 |
- 扫码关注“火龙果编程”公众号,早日成为编程大神
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
good哦