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

【Java面试笔记:进阶】21.Java并发类库提供的线程池有哪几种? 分别有什么特点?

Java 并发类库通过 java.util.concurrent.Executors 工厂类提供了多种预配置的线程池,每种线程池针对不同的使用场景设计。

1. Java线程池类型及特点

1.newCachedThreadPool()

  • 适用于大量短时间任务。
  • 尝试缓存线程并重用,无缓存线程时创建新线程。
  • 线程闲置超过60秒会被终止。
  • 内部使用SynchronousQueue作为工作队列。
  • 核心参数:
    • 核心线程数 = 0,最大线程数 = Integer.MAX_VALUE
    • 线程空闲时间:60 秒。
    • 工作队列:SynchronousQueue(直接传递队列)。
  • 创建方式
    ExecutorService executor = Executors.newCachedThreadPool();
    

2.newFixedThreadPool(int nThreads)

  • 重用固定数目的线程。
  • 使用无界工作队列,最多有nThreads个活动线程。
  • 任务数量超过活动线程数时,任务会在队列中等待。
  • 核心参数:
    • 核心线程数 = 最大线程数(固定线程数)。
    • 工作队列:无界 LinkedBlockingQueue
  • 创建方式
    ExecutorService executor = Executors.newFixedThreadPool(int nThreads);
    

3.newSingleThreadExecutor()

  • 限制为单个工作线程。
  • 使用无界工作队列&#

相关文章:

  • 【软考-架构】13.5、中间件
  • 某海关某署 【瑞数6】逆向分析
  • 《代码之美:静态分析工具与 CI 集成详解》
  • 豆包,Kim,deepseek对比
  • LLM(大语言模型)技术的最新进展可总结
  • 多模态大语言模型arxiv论文略读(四十三)
  • 未来医院已来:AI如何实现无死角安全监控
  • PowerBI动态路径获取数据技巧
  • 腾讯CSIG一面
  • 35-疫苗预约管理系统(微服务)
  • qt事件过滤与传递机制
  • 华为云Astro canvas大屏与iotDA是怎样通过数据接入、数据中心的功能传输和通讯的?
  • 经典反转结构——案例分析
  • Java 实现目录递归拷贝
  • django之账号管理功能
  • 用Python做有趣的AI项目1:用 TensorFlow 实现图像分类(识别猫、狗、汽车等)
  • lvgl 实现横向滑动,并且捕获最中间那个元素
  • SpringCloud微服务架构
  • 基于先进MCU的机器人运动控制系统设计:理论、实践与前沿技术
  • VS BUG(6) LINK : fatal error LNK1158: 无法运行“rc.exe”
  • 我驻阿巴斯总领馆:将持续跟踪港口爆炸事件进展,全力确保中方人员安全
  • 坤莹·帕塔玛·利斯达特拉任世界羽联主席
  • 伊朗阿巴斯港港口爆炸已致47人受伤
  • 可移动可变形的新型超材料问世
  • 5月1日起,涉外婚姻登记将在上海市16区全面铺开
  • 商务部:美方应彻底取消所有对华单边关税措施