在Java中,可以使用ThreadPoolExecutor类手动创建一个线程池。ThreadPoolExecutor是ExecutorService接口的实现类,提供了更多的配置选项和灵活性。
ThreadPoolExecutor构造函数的参数如下:
```
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,
BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)
```
其中,各个参数的含义如下:
- corePoolSize:核心线程数,即线程池中保持活动状态的最小线程数。
- maximumPoolSize:最大线程数,即线程池中允许存在的最大线程数。
- keepAliveTime:线程空闲时间,当线程池中的线程数量超过corePoolSize时,多余的空闲线程会在指定时间内被回收。
- unit:keepAliveTime的时间单位。
- workQueue:任务队列,用于存放等待执行的任务。
- threadFactory:线程工厂,用于创建新的线程。
- handler:拒绝策略,用于处理无法处理的任务。
以下是一个示例代码,展示如何手动创建一个线程池:
```
import java.util.concurrent.*;
public class ThreadPoolDemo {
public static void main(String[] args) {
int corePoolSize = 5;
int maximumPoolSize = 10;
long keepAliveTime = 60L;
TimeUnit unit = TimeUnit.SECONDS;
BlockingQueue workQueue = new ArrayBlockingQueue<>(100);
ThreadFactory threadFactory = Executors.defaultThreadFactory();
RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy();
ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit,
workQueue, threadFactory, handler);
// 添加任务到线程池
executor.execute(new Runnable() {
public void run() {
System.out.println("执行任务");
}
});
// 关闭线程池
executor.shutdown();
}
}
```
在上面的示例代码中,创建了一个核心