java中executors工厂类提供五种线程池:固定大小(newfixedthreadpool)适合稳定并发任务但需防oom;可缓存(newcachedthreadpool)适用于突发短任务但线程数不可控;单线程(newsinglethreadexecutor)保障串行执行且自动恢复;定时调度(newscheduledthreadpool)支持延迟和周期任务,但不支持动态扩容。

Java 中使用 Executors 工厂类创建线程池,核心就是调用它的静态方法——一行代码就能拿到一个功能明确、开箱即用的线程池实例。它适合开发初期快速验证、工具脚本或非关键业务场景,但要注意:生产环境建议用 ThreadPoolExecutor 手动配置,避免默认参数带来的隐患(比如无界队列导致内存溢出)。
固定大小线程池(newFixedThreadPool)
适用于任务量稳定、需要控制并发上限的场景,比如处理 HTTP 请求、数据库批量操作。
- 创建方式:
ExecutorService pool = Executors.newFixedThreadPool(4); - 特点:线程数固定为 4,所有线程长期存活;新任务提交时,若有空闲线程立即执行,否则进入无界队列等待
- 注意:队列无界,若任务持续涌入且处理慢,可能引发 OOM
可缓存线程池(newCachedThreadPool)
适合大量短生命周期、突发性任务,例如日志异步写入、轻量计算任务。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 创建方式:
ExecutorService pool = Executors.newCachedThreadPool(); - 特点:核心线程数为 0,最大线程数为
Integer.MAX_VALUE;空闲线程 60 秒后自动回收;新任务总是优先复用空闲线程,没有则新建 - 注意:线程数不受控,高并发下可能创建过多线程,耗尽系统资源
单线程线程池(newSingleThreadExecutor)
不是为了并发,而是为了「串行 + 异步 + 可管理」,比如顺序更新状态、串行写文件、轻量事务补偿。
- 创建方式:
ExecutorService pool = Executors.newSingleThreadExecutor(); - 特点:仅 1 个线程;任务按提交顺序 FIFO 执行;线程异常终止后会自动重建;内部使用无界队列
- 优势:比手动
new Thread().start()更可靠,支持优雅关闭(shutdown())、监控和拒绝策略
定时/周期性线程池(newScheduledThreadPool)
专门用于延迟执行或周期调度,比如心跳上报、定时清理缓存、轮询检查。
- 创建方式:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2); - 常用调度方法:
-
schedule(Runnable, delay, TimeUnit):延迟一次执行 -
scheduleAtFixedRate(..., initialDelay, period, ...):固定频率(从首次开始计时) -
scheduleWithFixedDelay(..., initialDelay, delay, ...):固定延时(上一次结束后再等 delay)
-
- 注意:线程数固定,不支持动态扩容;若任务执行时间 > 周期,会“堆积”而非并行执行
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










