Java 线程池与 Executor
线程池是管理线程的重要机制,可以复用线程,提高性能。理解线程池的使用是进行高效并发编程的关键。本章将详细介绍 Java 中的线程池。
Executors 工厂方法
Executor 框架
Executor 框架(Java 5+)提供了线程池的实现。
核心接口:
Executor:执行任务的接口ExecutorService:扩展 Executor,提供生命周期管理ScheduledExecutorService:支持定时任务ThreadPoolExecutor:线程池实现类
Executors 工厂类
Executors 提供了创建线程池的工厂方法。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
// 创建固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(10);
// 提交任务
executor.submit(() -> {
System.out.println("任务执行");
});
// 关闭线程池
executor.shutdown();
几种常见线程池
FixedThreadPool(固定大小线程池)
newFixedThreadPool(nThreads) 创建固定大小的线程池。
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
final int taskId = i;
executor.submit(() -> {
System.out.println("任务 " + taskId + " 执行");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
executor.shutdown();
特点:
- 固定线程数
- 无界队列
- 适合执行长期任务