package thead.pool; import java.util.concurrent.Executors; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ThreadPoolNewCached03CustomCachedThreadPool { public static void main(String[] args) { // 定制化线程池 ThreadPoolExecutor executor = new ThreadPoolExecutor( 0, // 核心线程数 0(不保持任何核心线程) 5, // 最大线程数为 4 60L, // 空闲线程保持时间 60 秒 TimeUnit.SECONDS, // 时间单位:秒 new SynchronousQueue<>(),// 使用一个无界队列(任务等待队列) Executors.defaultThreadFactory(), // 使用默认线程工厂 new ThreadPoolExecutor.AbortPolicy() // 默认的拒绝策略:抛出异常 ); // 提交一些任务 for (int i = 0; i < 10; i++) { final int taskId = i; executor.submit(() -> { System.out.println("Task " + taskId + " executed by: " + Thread.currentThread().getName()); try { // 模拟任务执行时间 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }); } // 等待所有任务完成 try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } // 关闭线程池 executor.shutdown(); } }