在 Java 中,ExecutorService 是 java.util.concurrent 包提供的线程池框架,用来更方便、可控地创建和管理线程,而不是直接 new Thread()。
下面从基本用法 → 常见创建方式 → 示例代码 → 关闭线程池逐步说明。
ExecutorService executor = Executors.newFixedThreadPool(5);
✅ 适合:已知并发量的场景
ExecutorService executor = Executors.newSingleThreadExecutor();
✅ 适合:顺序执行任务
ExecutorService executor = Executors.newCachedThreadPool();
✅ 适合:大量短生命周期任务
⚠ 可能创建大量线程
ScheduledExecutorService executor =
Executors.newScheduledThreadPool(3);
✅ 适合:定时任务、心跳、重试
ExecutorService executor = new ThreadPoolExecutor(
2, // 核心线程数
10, // 最大线程数
60L, TimeUnit.SECONDS, // 空闲线程存活时间
new LinkedBlockingQueue<>(100) // 任务队列
);
executor.execute(() -> {
System.out.println("线程执行:" + Thread.currentThread().getName());
});
Future<Integer> future = executor.submit(() -> {
return 1 + 1;
});
Integer result = future.get(); // 阻塞获取结果
import java.util.concurrent.*;
public class ExecutorDemo {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newFixedThreadPool(3);
for (int i = 0; i < 5; i++) {
executor.execute(() -> {
System.out.println(
Thread.currentThread().getName() + " 执行任务");
});
}
executor.shutdown();
}
}
executor.shutdown(); // 不再接受新任务
executor.awaitTermination(10, TimeUnit.SECONDS); // 等待任务完成
或强制关闭:
executor.shutdownNow();
❌ 不关闭线程池(程序不退出)
❌ 用 new Thread() 替代线程池
❌ 缓存线程池处理高并发长任务
如果你愿意,我可以:
你现在是用在什么场景?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。