0

0

Java Executors中的四种线程池

冰川箭仙

冰川箭仙

发布时间:2025-12-07 19:03:07

|

797人浏览过

|

来源于php中文网

原创

newFixedThreadPool创建固定线程数的线程池,使用无界队列,适用于负载重且任务量可预期场景;2. newCachedThreadPool根据需要创建线程,空闲线程缓存60秒,适用于大量短时异步任务;3. newSingleThreadExecutor提供单一线程,保证任务串行执行,适用于日志写入等需顺序处理场景;4. newScheduledThreadPool支持定时和周期性任务执行,适用于心跳检测、定时同步等场景。尽管Executors简化了线程池创建,但生产环境建议直接使用ThreadPoolExecutor以精确控制参数,避免OOM和资源耗尽风险。

java executors中的四种线程池

Java 中的 Executors 类提供了创建线程池的便捷方法,封装了 ThreadPoolExecutor 的复杂配置。其中最常用的有四种线-程池类型,分别适用于不同的使用场景。

1. newFixedThreadPool(固定大小线程池)

通过 Executors.newFixedThreadPool(int nThreads) 创建,线程池中线程数量固定。

说明:核心线程数和最大线程数相等,线程不会被回收。任务队列使用的是无界队列 LinkedBlockingQueue,当任务提交速度超过处理速度时,可能导致内存占用过高。

适用场景:

立即学习Java免费学习笔记(深入)”;

  • 负载较重但任务数量可预期的服务
  • 需要控制并发线程数量,避免资源耗尽

2. newCachedThreadPool(缓存线程池)

通过 Executors.newCachedThreadPool() 创建,线程池会根据需要创建新线程,空闲线程会被缓存60秒。

说明:核心线程数为0,最大线程数为 Integer.MAX_VALUE,使用 SynchronousQueue 作为任务队列。适合执行大量短期异步任务

注意:如果任务持续提交且执行缓慢,可能创建过多线程,导致系统资源耗尽。

适用场景:

立即学习Java免费学习笔记(深入)”;

  • 执行大量短生命周期任务
  • 任务突发性强、数量不稳定

3. newSingleThreadExecutor(单线程线程池)

通过 Executors.newSingleThreadExecutor() 创建,线程池中只有一个工作线程。

Chromox
Chromox

Chromox是一款领先的AI在线生成平台,专为喜欢AI生成技术的爱好者制作的多种图像、视频生成方式的内容型工具平台。

下载

说明:保证所有任务按提交顺序串行执行(FIFO)。即使线程异常结束,也会创建新的线程来替代。使用无界队列存储任务。

优点:简化线程安全问题,适合需要顺序执行的任务。

适用场景:

立即学习Java免费学习笔记(深入)”;

  • 日志写入
  • 文件读写操作
  • 需要串行处理的任务流

4. newScheduledThreadPool(定时调度线程池)

通过 Executors.newScheduledThreadPool(int corePoolSize) 创建,支持定时及周期性任务执行。

说明:可以延迟执行任务或以固定频率/固定延迟重复执行。底层使用延迟队列 DelayedWorkQueue。

常用方法:

  • schedule(Runnable command, long delay, TimeUnit unit):延迟执行
  • scheduleAtFixedRate(...):按固定周期执行
  • scheduleWithFixedDelay(...):上一次执行完成后等待固定时间再执行

适用场景:

立即学习Java免费学习笔记(深入)”;

  • 心跳检测
  • 定时数据同步
  • 周期性清理任务

基本上就这些。虽然 Executors 提供了方便的工厂方法,但在生产环境中建议根据实际需求直接使用 ThreadPoolExecutor 构造函数,更精确地控制参数,避免潜在风险。比如无界队列可能导致 OOM,过大的线程数影响性能等。合理选择线程池类型,是保障应用稳定性和性能的关键。不复杂但容易忽略。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1030

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

612

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

334

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

235

2025.08.29

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

765

2023.08.10

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

377

2025.12.24

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

32

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

29

2026.01.21

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.4万人学习

C# 教程
C# 教程

共94课时 | 11.2万人学习

Java 教程
Java 教程

共578课时 | 81.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号