跳到主要内容

打造专属线程池让并发处理更高效

介绍

线程池是一种在程序执行过程中用于管理和复用线程的技术,它可以有效地减少在创建和销毁线程时所需的开销,并且可以控制并发线程的最大数量,提高系统资源的利用率和程序的稳定性。

在Java中,线程池主要通过 ThreadPoolExecutor 实现类来实现。而在此类的父接口 ExecutorService 提供了封装的线程池功能,比如任务提交、线程池管理(启动、关闭)等。

线程池工作原理是,当提交一个任务时,如果线程池从来没有执行过任务,那么会创建新的线程来执行此任务。如果之前执行任务的话,则会使用已有的空闲核心线程来执行该任务,如果正在执行的任务数量超过了核心线程数的话,新的任务会被放入队列中等待执行。如果此时任务很多,队列的容量也已经放不下的话,就会创建新的线程来处理任务。如果线程数已达到了最大线程参数的值,那么就要执行拒绝策略。

关于线程池的详细介绍和原理解析部分,可跳转到相应文档查询

技术精华-超详细的线程池原理解析

看这里,我们再看一下使用Executors提供的线程池的问题

public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}


public static ExecutorService newSingleThreadExecutor() {
return new FinalizableDelegatedExecutorService
(new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()));
}


public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
return new ScheduledThreadPoolExecutor(corePoolSize);
}

public ScheduledThreadPoolExecutor(int corePoolSize) {
super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
new DelayedWorkQueue());
}

以上是Executors提供的常用的几种封装好的线程池,这几种需要注意

  1. newFixedThreadPool , newSingleThreadExecutor 阻塞队列长度为Integer.MAX_VALUE
  2. newCachedThreadPool 最大线程数为Integer.MAX_VALUE
  3. newScheduledThreadPool 最大线程数为Integer.MAX_VALUE

阿里开发规范手册中不建议使用提供这几种线程池,建议是自己实现ThreadPoolExecutor来实现线程池

而在此组件中,对 ThreadPoolExecutor 进行了完整的实现,设计出了功能完整的线程池,接下来我们来详细介绍此组件

付费内容提示

该文档的全部内容仅对「码力全开」项目实战&技术讲解 知识星球用户开放

加入星球,一次获得完整项目资料、全栈技术知识库和长期答疑服务。

100万+字全栈技术知识库深入讲解技术核心、数据库、中间件和分布式等内容
8套热门的实战项目持续更新的企业级项目覆盖高并发、微服务、数据中台 和 AI Agent 等方向
AI 技术知识大模型面试详解覆盖 AI 模型原理、Agent、RAG、MCP、Skills、Harness 等核心知识点
文档 + 视频两种讲解形式既能系统阅读,也能跟随视频理解核心业务

完整项目实战资料

每套项目均包含从 0 到 1 讲解文档核心业务讲解视频

从基础项目到复杂业务场景,项目资料会持续更新。

8 套项目
  • 01Nexus Agent AI 智能体
  • 02Nexus Agent Pro 完全版
  • 03黑马点评Plus
  • 04大麦
  • 05大麦Pro
  • 06大麦AI
  • 07流量切换
  • 08数据中台

加入后还能获得

进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。

从学习、面试到项目启动,都可以继续获得支持。

  • 1 对 1 解答项目和技术问题都可以提问
  • 针对性补充没有讲清楚的内容会继续补充
  • 面试与简历指导梳理回答技巧和项目亮点
  • 中间件云环境项目依赖可以直接接入使用
  • 面试后复盘被问住的问题可以继续交流
  • 远程问题解决项目启动问题可协助排查
知识星球二维码

扫码进入知识星球

  1. 打开微信,扫描左侧二维码,加入「码力全开」项目实战&技术讲解 知识星球
  2. 查看星球使用指导,获取完整项目讲解资料索引
解锁全部付费内容
🎁优惠