线程池简介

线程池简介

什么是线程池

线程池(Thread Pool)是一种线程复用的技术,预先创建一定数量的线程放入池中,当有任务需要执行时,从池中获取空闲线程来执行任务,任务完成后线程不销毁,而是返回池中等待下一个任务。

1
2
3
4
5
6
// 最简单的线程池使用示例
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> {
System.out.println("任务执行中...");
});
executor.shutdown();

为什么需要线程池

问题:直接创建线程的弊端

1
2
3
4
// 不推荐:每次任务都创建新线程
for (int i = 0; i < 1000; i++) {
new Thread(() -> doTask()).start();
}
问题 说明
创建开销大 线程创建需要分配栈内存(默认1MB)、初始化 TCB 等
销毁开销大 线程销毁需要回收资源、GC 处理
资源耗尽 无限制创建线程可能导致 OOM 或系统崩溃
上下文切换 线程过多导致 CPU 频繁切换,性能下降
难以管理 无法统一监控、调度、限流

解决:线程池的优势

1
2
3
4
5
// 推荐:使用线程池复用线程
ExecutorService executor = Executors.newFixedThreadPool(10);
for (int i = 0; i < 1000; i++) {
executor.submit(() -> doTask());
}

线程池的核心优势

优势 说明
降低资源消耗 复用线程,避免频繁创建销毁的开销
提高响应速度 任务到达时无需等待线程创建,直接执行
提高可管理性 统一分配、调优、监控线程资源
提供更多功能 定时执行、周期执行、任务队列、拒绝策略等

线程池核心接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌─────────────────────────────────────────────────────────┐
Executor
│ (顶层接口) │
void execute(Runnable) │
└─────────────────────┬───────────────────────────────────┘


┌─────────────────────────────────────────────────────────┐
ExecutorService
│ (扩展生命周期管理) │
submit() / shutdown() / invokeAll() / ... │
└─────────────────────┬───────────────────────────────────┘


┌─────────────────────────────────────────────────────────┐
ThreadPoolExecutor
│ (核心实现类) │
7大参数 / 4种拒绝策略 / 5种状态 │
└─────────────────────────────────────────────────────────┘

快速入门示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.concurrent.*;

public class ThreadPoolDemo {
public static void main(String[] args) {
// 1. 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(3);

// 2. 提交任务
for (int i = 1; i <= 5; i++) {
final int taskId = i;
executor.submit(() -> {
System.out.println("任务" + taskId + " 由 " +
Thread.currentThread().getName() + " 执行");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
}

// 3. 关闭线程池
executor.shutdown();
}
}

输出示例:

1
2
3
4
5
任务1 由 pool-1-thread-1 执行
任务2 由 pool-1-thread-2 执行
任务3 由 pool-1-thread-3 执行
任务4 由 pool-1-thread-1 执行 ← 线程复用
任务5 由 pool-1-thread-2 执行 ← 线程复用

相关链接

  • 下一篇:02-线程池原理
  • 线程池类型:03-线程池类型

线程池简介
https://zmmmmy.github.io/2026/01/10/线程池简介/
作者
ZhiMy
发布于
2026年1月10日
许可协议