当前位置: 首页 > news >正文

Java线程池知识小结

一、线程池线程池 存放多个线程的 “池子”。程序需要执行任务时直接从池子里借一个线程任务执行完线程不销毁放回池子复用。线程池的作用避免频繁创建 / 销毁线程非常耗资源控制并发线程数量防止服务器卡死统一管理线程监控、调优、拒绝策略线程池 线程复用 控制并发 资源管理Java 内置线程池的核心工具ExecutorService—— 线程池接口ThreadPoolExecutor—— 线程池真正实现类最常用二、线程池 7 大核心参数new ThreadPoolExecutor( int corePoolSize, // 核心线程数常驻线程 int maximumPoolSize, // 最大线程数 long keepAliveTime, // 非核心线程空闲多久被销毁 TimeUnit unit, // 时间单位 BlockingQueueRunnable workQueue, // 任务队列 ThreadFactory threadFactory, // 线程工厂命名线程 RejectedExecutionHandler handler // 拒绝策略 )执行流程超级重要任务进来 → 核心线程未满 → 创建核心线程执行核心线程满了 → 任务放进队列排队队列满了 → 创建非核心线程执行总线程达到最大 → 执行拒绝策略三、最常用的 4 种线程池简单好用Java 通过Executors工具类快速创建1.FixedThreadPool固定线程数适合已知并发压力的任务ExecutorService pool Executors.newFixedThreadPool(5);2. CachedThreadPool自动扩容适合大量短生命周期任务ExecutorService pool Executors.newCachedThreadPool();3.ScheduledThreadPool定时任务适合定时、周期性执行任务ScheduledExecutorService pool Executors.newScheduledThreadPool(3);4.SingleThreadExecutor单线程适合需要顺序执行的任务ExecutorService pool Executors.newSingleThreadExecutor();四、拒绝策略线程满了怎么办4 种内置策略AbortPolicy默认直接抛异常CallerRunsPolicy让提交任务的线程自己执行DiscardPolicy直接丢掉任务DiscardOldestPolicy丢掉队列最老的任务真实开发常用CallerRunsPolicy最安全五、线程池大小如何设置CPU 密集型核心数 1IO 密集型核心数 * 2或更多因为 IO 会等待例4 核 CPU计算任务 → 核心线程 5网络 / 数据库 → 核心线程 8~10六、生产环境最佳线程池配置1. 核心原则禁止Executors快捷创建直接手动ThreadPoolExecutor实例化规避 OOM 风险按业务类型区分线程池隔离任务互不影响。2. 参数取值规范参数IO 密集型CPU 密集型说明核心线程CPU 核数 ×2CPU 核数 1常驻核心保障基础吞吐最大线程核心 ×4等于核心IO 可扩容应对突发峰值空闲存活60s0s闲置线程及时回收节省资源阻塞队列ArrayBlockingQueue(200)固定队列 100有界队列杜绝无限堆积 OOM线程工厂自定义命名自定义命名便于日志排查问题拒绝策略CallerRunsPolicyCallerRunsPolicy不丢任务降级由调用方执行3. 队列选型ArrayBlockingQueue有界队列固定容量生产首选可控内存禁用SynchronousQueue、无界LinkedBlockingQueue极易引发内存溢出4. 拒绝策略选型生产首选CallerRunsPolicy优势不会丢弃业务任务削峰限流保护服务禁用默认 AbortPolicy 频繁抛异常、Discard 系列丢失数据5. 生产运维要点线程池拆分业务、定时、异步消息各自独立池避免互相阻塞监控埋点监控线程活跃数、队列积压、拒绝次数、执行耗时优雅关闭应用下线调用shutdown()等待任务收尾动态调参压测后根据实际 QPS、耗时微调核心数与队列大小6. 避坑总结不使用 Executors 创建线程池队列必须设固定上限业务分类隔离线程池自定义线程名方便问题定位拒绝策略优先调用者执行保障数据不丢失
http://www.zskr.cn/news/1377504.html

相关文章:

  • 10款降 AI 率工具革命:从同义词替换到语义重构的技术演进与工具选型指南 - 全维度降AI
  • 别再手动调时间了!用Windows任务计划程序+Python,让Win10/macOS双系统时间自动对齐
  • Unity里用VideoPlayer做个随机视频播放器,像刷短视频一样切换(附完整C#脚本)
  • C51开发中的查表值验证方法与优化技巧
  • 5分钟免费解锁:告别网盘限速,9大平台文件高速下载终极指南
  • WorkshopDL:无需Steam客户端,三步下载Steam创意工坊模组的终极指南
  • 2026太仓市黄金回收白银回收铂金回收店铺哪家好 实力靠谱门店排行榜推荐及联系方式 - 亦辰小黄鸭
  • 图像矢量化完整指南:3分钟将普通图片升级为专业矢量图
  • 物理信息神经网络(PINNs)在建筑能源建模与控制中的应用与实战
  • OneMore:终极OneNote插件,彻底改变你的笔记管理方式
  • Umi-OCR 文字识别工具:5分钟快速上手指南,免费离线OCR解决方案
  • CACE-LR模型:机器学习势函数如何攻克长程静电与动态电荷预测难题
  • 强力革新游戏输入体验:开源SOCD重映射工具的专业解决方案
  • 2026年最新合水县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 2026年最新凤山县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 元学习数据填补框架MIB:集成多种方法提升缺失值处理鲁棒性
  • Unity背包拖拽实战:三坐标系映射与跨Panel交互原理
  • 多臂老虎机算法:实现模型部署的自动化与自适应决策
  • Wireshark与Fiddler联手解密HTTPS流量实战指南
  • 9大网盘直链下载助手LinkSwift:免费获取高速下载地址的完整指南
  • 随机森林算法在红外BIC光子晶体逆向设计中的应用与实践
  • 安卓逆向实战:用frida-dexdump精准提取加固App运行时Dex
  • 城通网盘直链解析工具:3分钟告别广告等待,获取高速下载地址
  • Windows横向移动实战:Credential Guard原理与绕过边界
  • 避坑指南:Niagara中Point/Line引力模块的常见误区与性能优化(UE 5.3)
  • 从工程师到架构师:跨越这道坎的三个关键能力
  • Cursor Pro官方功能深度实践与工程提效指南
  • AI生成文本检测实战:从逻辑回归到DistilBERT的模型对比与工程落地
  • UE5 Chaos自动破碎失效的五大避坑方案
  • 2026年AI论文平台盘点:12款神器助你高效完成文献搜集、创作和修稿