首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
JavaSE拓展:工具类Executors
📅 2026/10/10 5:54:05
✍️ 爱科研究院
👁 阅读 3,247
一、Executors 概述java.util.concurrent.Executors是线程池的工具类提供静态方法快速创建不同类型线程池底层全部是封装了ThreadPoolExecutor的构造器简化代码编写。⚠️阿里巴巴开发手册强制规范生产环境禁止使用 Executors 创建线程池容易引发 OOM 内存溢出仅用于测试、学习场景。 接口ExecutorService代表线程池对象。二、Executors 4 大静态方法1. newFixedThreadPool (int nThreads) 固定线程池// 创建固定数量的核心线程无临时线程 ExecutorService pool Executors.newFixedThreadPool(3);参数线程数量固定底层源码new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueueRunnable());参数解读核心线程数 最大线程数没有临时线程阻塞队列LinkedBlockingQueue默认容量Integer.MAX_VALUE无限队列特点线程数量固定线程不会被回收任务多了会无限往队列放。风险任务大量堆积队列无限长 →OOM 内存溢出2. newSingleThreadExecutor () 单线程池ExecutorService pool Executors.newSingleThreadExecutor();底层核心线程 1最大线程 1无限阻塞队列特点池内永远只有1 个线程任务串行依次执行适合任务需要顺序执行场景。风险同样无限队列任务堆积 OOM。3. newCachedThreadPool () 可缓存线程池ExecutorService pool Executors.newCachedThreadPool();底层源码new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueueRunnable());参数解读0 个核心线程最大线程数为Integer.MAX_VALUE临时线程空闲 60 秒自动销毁队列SynchronousQueue不存储任务来了任务直接创建线程。特点按需创建线程线程空闲 60s 自动回收。风险任务瞬间大量涌入会疯狂新建线程线程数量过多CPU 耗尽OOM。4. newScheduledThreadPool (int corePoolSize) 定时线程池// 支持延迟执行、周期性重复执行任务 ScheduledExecutorService pool Executors.newScheduledThreadPool(2);返回值ScheduledExecutorService继承ExecutorService额外支持定时任务特点可以延迟一段时间执行任务或者每隔一段时间重复执行任务。风险最大线程数Integer.MAX_VALUE大量任务会创建大量线程OOM。三、代码示例演示示例 1newFixedThreadPoolimport java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExecutorsDemo { public static void main(String[] args) { // 创建固定3个线程的线程池 ExecutorService pool Executors.newFixedThreadPool(3); // 提交5个任务 for (int i 1; i 5; i) { pool.submit(() - { System.out.println(Thread.currentThread().getName() 正在执行任务); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }); } // 关闭线程池不再接收新任务执行完现有任务再关闭 pool.shutdown(); } }示例 2定时线程池延迟执行import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledPoolDemo { public static void main(String[] args) { ScheduledExecutorService pool Executors.newScheduledThreadPool(2); // 参数任务延迟多久执行时间单位 pool.schedule(() - { System.out.println(延迟3秒执行); },3, TimeUnit.SECONDS); } }四、ExecutorService 线程池常用方法方法作用execute(Runnable task)提交无返回值任务submit(task)提交任务支持 Runnable/Callable返回 Future 对象可以拿到任务返回结果shutdown()平缓关闭线程池不接收新任务等待已经提交的任务执行完毕shutdownNow()立刻尝试关闭中断正在运行任务返回队列里未执行的任务列表isShutdown()判断线程池是否已经关闭五、重点面试总结必背Executors 是什么线程池工具类静态方法快速创建线程池底层封装 ThreadPoolExecutor。为什么生产不推荐 ExecutorsnewFixedThreadPool /newSingleThreadExecutor阻塞队列是无限长大量任务堆积 → OOMnewCachedThreadPool /newScheduledThreadPool最大线程数无限大量任务会创建海量线程 → OOM✅生产推荐手动new ThreadPoolExecutor()自定义 7 个参数限制队列长度、最大线程数。四个线程池简单区分newFixedThreadPool固定数量线程newSingleThreadExecutor单线程串行执行newCachedThreadPool自动按需创建、回收临时线程newScheduledThreadPool延迟 / 周期定时任务六、Executors 和 ThreadPoolExecutor 的关系ThreadPoolExecutor线程池实现类原生构造器7 个参数可控生产推荐Executors工具类只是帮你 new ThreadPoolExecutor帮你填好参数简化代码ExecutorService线程池接口定义线程池的行为方法
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/10 5:49:05
Apache Zeppelin 解释器(Interpreter)体系详解:分组、设置、生命周期与配置注入
2026/10/10 5:49:05
深入解析 go-openapi/jsonpointer:Go 语言下基于 RFC 6901 的 JSON Pointer 实现与实战指南
2026/10/10 5:49:05
Kun 跨设备数据迁移设计解析:基于 .kunpack 逻辑包、路径重绑定与可回滚事务的完整方案
2026/10/10 6:49:09
AnyPS5:跨平台DualSense手柄映射与低延迟输入转发实战
2026/10/10 6:49:09
JavaWeb毕设实战:车辆违章信息管理系统设计开发与答辩指南
2026/10/10 6:49:09
微网并离网切换技术解析:架构、控制策略与调试实践
2026/10/10 6:49:09
CentOS 7.9 源码编译安装 FreeSWITCH 全流程与避坑指南
2026/10/10 6:49:09
测试环境云化实战:浏览器矩阵与按需调度
2026/10/10 6:44:08
多模型部署实战:从显存计算到路由调度与稳定性优化
2026/10/10 0:03:38
工业软件标准化路线图:国产替代的落地施工图
2026/10/10 0:03:38
VCMI安卓版实操指南:原生运行英雄无敌3的3步技术落地
2026/10/10 0:03:38
稀疏多通道盲反褶积的MATLAB算法实现与参数调优
2026/10/10 3:42:06
Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化
2026/10/10 3:42:01
多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系
2026/10/10 3:41:58
hindsight:面向LLM应用的事后可观测性工程实践
2026/10/10 3:41:56
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/10 3:41:54
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/9 11:36:17
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)