要自定义一个线程池,可以使用 ThreadPoolExecutor 类。下面是一个简单的示例代码,其中创建了一个线程池,最大线程数为 10,队列大小为 100,线程池中的线程都是守护线程,任务拒绝策略为抛出异常。
import java.util.concurrent.*;
public class MyThreadPool {
public static void main(String[] args) {
// 创建线程池,最大线程数为 10,队列大小为 100
ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 10, 0L,
TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(100));
// 设置线程池中的线程为守护线程
executor.setThreadFactory((r) -> {
Thread thread = new Thread(r);
thread.setDaemon(true);
return thread;
});
// 设置任务拒绝策略为抛出异常
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
// 提交任务到线程池
for (int i = 0; i < 1000; i++) {
executor.submit(() -> {
// 任务内容
});
}
// 关闭线程池
executor.shutdown();
}
}