Java并发编程线程池-new ThreadPoolExecutor(参数解读)

发布时间:2026/10/4 9:01:21
Java并发编程线程池-new ThreadPoolExecutor(参数解读) ExecutorService pool new ThreadPoolExecutor(2, 4, 6, TimeUnit.SECONDS, new ArrayBlockingQueue(2), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());以上创建了一个ThreadPoolExecutor线程池对象它是Java 并发编程中最核心的类之一。其中的参数解读如下1. 核心与最大任务处理能力corePoolSize 2核心线程数。这是线程池的“常驻员工”即便没活干这 2 个人也会留着。maximumPoolSize 4最大线程数。如果活太多队列满了线程池会临时扩招最多招到 4 个人。2. 空闲处理机制keepAliveTime 6unit TimeUnit.SECONDS如果非核心线程那 2 个扩招的临时工在 6 秒内没有接到新任务就会被裁掉以节省资源。3. 工作排队区域new ArrayBlockingQueue(2)任务缓存区。如果核心的 2 个人都在忙排好队的新任务会放在队列里等。这个队列最多放 2 个任务。4. 线程创建工厂Executors.defaultThreadFactory()这就是一个“招聘负责人”负责给线程取名字、设置优先级等用的是默认的招聘标准。5. 拒绝策略最关键的部分new ThreadPoolExecutor.AbortPolicy()这是默认的拒绝策略。含义如果 4 个人都在忙且队列里的 2 个位子也满了再有新任务进来线程池会直接抛出RejectedExecutionException异常不再处理这个新任务。一句话总结流程工作逻辑当任务来临时它是这样被处理的先找常驻员工核心 2 人能处理就处理。常驻员工满了去排队如果队列没满还能放 2 个就在那里等着。队列满了找临时工去扩招临时工直到总人数达到 4 人。都满了拒绝任务如果 4 个人都在忙队列也没位子了触发AbortPolicy直接抛出异常拒绝接受新任务。为什么这样做这种设计是为了资源保护。如果不设置这些限制比如队列无限大、线程无限多在高并发下程序可能会因为创建过多的线程导致内存溢出OOM或者因为大量的等待任务拖垮整个系统。形象比喻这就像一个只有 2 个固定柜台的银行大厅里有 2 把椅子队列。最多一共开 4 个窗口最大线程数。如果有人进门先去柜台柜台满了去椅子上坐着等椅子也坐满了再开临时窗口。如果临时窗口也满了大厅也站不下了经理只能对着进门的第 7 个人喊“抱歉今天不办了请回吧”这就是AbortPolicy。这段代码适合在对系统实时性要求较高、且不允许任务无限制堆积的场景下使用。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询