newFixedThreadPool设置队列长度
时间: 2025-06-29 12:21:29 浏览: 5
### Java `newFixedThreadPool` 中设置阻塞队列大小
在Java中,`Executors.newFixedThreadPool(int nThreads)` 方法用于创建一个固定大小的线程池。然而,此方法内部使用的默认工作队列为 `LinkedBlockingQueue<Integer.MAX_VALUE>`,即无界的阻塞队列[^1]。
为了自定义线程池并控制队列长度,应当直接使用 `ThreadPoolExecutor` 类而不是 Executors 工具类提供的静态工厂方法。下面展示了一个例子,在这个例子中指定了有界的工作队列:
```java
import java.util.concurrent.*;
public class CustomThreadPool {
public static void main(String[] args) {
int corePoolSize = 5;
int maximumPoolSize = 5; // 对于固定的线程池来说核心线程数等于最大线程数
long keepAliveTime = 0L;
TimeUnit unit = TimeUnit.MILLISECONDS;
BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(10); // 定义了容量为10的任务队列
ThreadFactory threadFactory = Executors.defaultThreadFactory();
RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy();
ThreadPoolExecutor executorService = new ThreadPoolExecutor(
corePoolSize,
maximumPoolSize,
keepAliveTime,
unit,
workQueue,
threadFactory,
handler);
try {
for (int i = 0; i < 20; ++i){
Runnable task = () -> System.out.println(Thread.currentThread().getName());
executorService.execute(task);
}
} finally {
executorService.shutdown(); // 关闭线程池
}
}
}
```
上述代码片段展示了如何通过 `ThreadPoolExecutor` 构造函数来自定义具有有限队列长度的线程池实例[^3]。
阅读全文
相关推荐



















