ThreadPoolExecutor 创建固定个数线程池
时间: 2024-10-01 08:00:39 浏览: 28
线程池ThreadPoolExecutor
5星 · 资源好评率100%
`ThreadPoolExecutor` 是 Java 核心库中的一个高级线程管理工具,它可以创建一个拥有固定数量线程的线程池。当你需要预先设定一个固定的并发度时,可以使用它。其构造方法接收几个关键参数:
1. **corePoolSize**:这是线程池的基础容量,即最小工作线程数,除非饱和策略生效,否则始终维持这个数量的线程在线程池中执行任务。
2. **maximumPoolSize**:线程池的最大容量。当所有核心线程都忙且有新的任务提交时,如果超过这个值,就会采用饱和策略来处理。
3. **keepAliveTime** 和 **unit**:线程空闲时等待新任务的时间长度及其时间单位。如果超过了这个时间且仍然没有新的任务,线程会被回收。
4. **workQueue**:用于存储待处理的任务的队列。常见的有 `LinkedBlockingQueue`、`ArrayBlockingQueue` 或自定义的阻塞队列。
通过这种方式,`ThreadPoolExecutor` 提供了更好的资源管理和控制,比如可以设置拒绝策略(如抛出异常、丢弃任务等),以及线程的隔离等。创建固定个数线程池的示例如下:
```java
int corePoolSize = 4; // 设置4个核心线程
ThreadPoolExecutor executor = new ThreadPoolExecutor(
corePoolSize, // corePoolSize
Integer.MAX_VALUE, // maximumPoolSize,通常设置为Integer.MAX_VALUE表示无限大
60L, // keepAliveTime 单位秒,超出则线程结束
TimeUnit.SECONDS, // 时间单位
new ArrayBlockingQueue<>(corePoolSize)); // 容纳固定数量任务的队列
```
阅读全文