java通过ThreadPoolExecutor去创建线程池
时间: 2024-07-21 21:01:27 浏览: 52
在Java中,`ThreadPoolExecutor`是一个强大的工具,用于管理固定大小或可调整大小的工作线程池。它允许开发者自定义线程池的行为,包括核心线程数、最大线程数、任务队列策略以及拒绝策略等。
创建一个`ThreadPoolExecutor`通常涉及以下几个步骤:
1. **初始化**:首先需要创建一个`ThreadPoolExecutor`实例,传入参数如线程工厂(`ThreadFactory`),定饱和策略(`BlockingQueue`),拒绝策略(`RejectedExecutionHandler`)等。例如:
```java
int corePoolSize = 5;
int maximumPoolSize = 10;
long keepAliveTime = 60L; // 满足条件后闲置线程存活时间,单位秒
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(100);
ThreadFactory threadFactory = Executors.defaultThreadFactory();
RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy();
ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, workQueue, threadFactory, handler);
```
2. **提交任务**:通过`execute(Runnable task)`方法将新的任务提交到线程池中执行,如果线程池未满,则立即执行;若线程池已满,则按照拒绝策略处理。
3. **关闭线程池**:当不再需要线程池时,可以调用`shutdown()`来停止接受新任务,当前运行的任务会完成后终止。还可以用`awaitTermination(long timeout, TimeUnit unit)`等待所有任务完成或超时。
阅读全文