在Java中,ThreadPoolExecutor是一个用于执行和管理线程的类。要配置ThreadPoolExecutor,您需要设置以下参数:
以下是一个配置ThreadPoolExecutor的示例:
import java.util.concurrent.*;
public class ThreadPoolExecutorConfig {
public static void main(String[] args) {
int corePoolSize = 5; // 核心线程数
int maximumPoolSize = 10; // 最大线程数
long keepAliveTime = 60L; // 空闲线程的存活时间(单位:秒)
TimeUnit unit = TimeUnit.SECONDS; // 存活时间的单位
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(20); // 任务队列
ThreadFactory threadFactory = Executors.defaultThreadFactory(); // 默认线程工厂
RejectedExecutionHandler rejectedExecutionHandler = new ThreadPoolExecutor.CallerRunsPolicy(); // 拒绝策略
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
corePoolSize,
maximumPoolSize,
keepAliveTime,
unit,
workQueue,
threadFactory,
rejectedExecutionHandler
);
// 使用线程池执行任务
for (int i = 0; i < 30; i++) {
int finalI = i;
threadPoolExecutor.submit(() -> {
System.out.println("Task " + finalI + " is executed by thread " + Thread.currentThread().getName());
});
}
// 关闭线程池
threadPoolExecutor.shutdown();
}
}
在这个示例中,我们创建了一个包含5个核心线程、最大线程数为10的线程池。空闲线程在60秒后会被回收。任务队列的容量为20,使用默认线程工厂和CallerRunsPolicy拒绝策略。