Executors类提供创建线程池的静态方法:newFixedThreadPool创建固定大小线程池,适用于稳定负载;newCachedThreadPool创建可缓存线程池,适合短期异步任务;newSingleThreadExecutor创建单线程池,保证任务顺序执行;newScheduledThreadPool和newSingleThreadScheduledExecutor分别用于定时及周期性任务调度。

Java 的 Executors 类是一个工具类,提供了创建各种常用线程池的静态工厂方法。这些方法封装了 ThreadPoolExecutor 的复杂配置,便于快速构建适合不同场景的线程池。以下是 Executors 提供的主要线程池方法及其用途。
newFixedThreadPool(int nThreads)
创建一个固定大小的线程池。
• 线程池中线程数量始终保持在指定的数目(nThreads)。• 多余的任务会被放入队列中等待执行。
• 适用于负载较重、任务数量稳定的场景。
• 示例:
ExecutorService fixedPool = Executors.newFixedThreadPool(4);
newCachedThreadPool()
创建一个可缓存的线程池。
• 线程池大小不受限制,会根据需要创建新线程。• 空闲超过60秒的线程会被回收。
• 适合执行大量短期异步任务的场景。
• 示例:
ExecutorService cachedPool = Executors.newCachedThreadPool();
newSingleThreadExecutor()
创建一个单线程的线程池。
立即学习“Java免费学习笔记(深入)”;
• 如果该线程异常结束,会创建一个新的线程替代。
• 相当于只有一个线程的固定线程池,但更强调“单一”语义。
• 示例:
ExecutorService singlePool = Executors.newSingleThreadExecutor();
newScheduledThreadPool(int corePoolSize)
创建一个支持定时及周期性任务执行的线程池。
• 可以安排任务在延迟后运行,或定期执行。• 核心线程数由参数指定,非核心线程空闲超时后会被回收。
• 常用于定时任务调度,如心跳检测、数据清理等。
• 示例:
ScheduledExecutorService scheduledPool = Executors.newScheduledThreadPool(3);使用 schedule 或 scheduleAtFixedRate 方法来提交任务。
newSingleThreadScheduledExecutor()
创建一个单线程的定时任务线程池。
• 功能与 newScheduledThreadPool(1) 类似,但确保只有一个线程。• 用于需要顺序执行的定时任务。
• 示例:
ScheduledExecutorService singleScheduled = Executors.newSingleThreadScheduledExecutor();
基本上就这些。虽然 Executors 提供的方法使用方便,但在生产环境中建议根据具体需求手动创建 ThreadPoolExecutor,以便更好地控制队列容量、拒绝策略等关键参数,避免潜在的资源耗尽问题。










