在 Java 中,线程池(Thread Pool) 是一种管理线程的机制,用于复用线程、控制并发数量、提高性能。
如果每次任务都 new Thread():
✅ 线程池的好处:
Java 线程池主要在:
java.util.concurrent
核心接口和类:
ExecutorExecutorService(常用)ThreadPoolExecutor(底层实现)Executors(工厂类,快速创建)ExecutorService pool = Executors.newFixedThreadPool(5);
pool.execute(() -> {
System.out.println("任务执行");
});
pool.shutdown();
常见工厂方法:
| 方法 | 说明 |
|---|---|
newFixedThreadPool(n) |
固定大小线程池 |
newCachedThreadPool() |
可缓存线程池 |
newSingleThreadExecutor() |
单线程池 |
newScheduledThreadPool(n) |
定时任务线程池 |
⚠️ 实际开发不推荐直接使用 Executors(容易 OOM),推荐 ThreadPoolExecutor
ThreadPoolExecutor executor = new ThreadPoolExecutor(
2, // 核心线程数
5, // 最大线程数
60L, // 空闲线程存活时间
TimeUnit.SECONDS,
new LinkedBlockingQueue<>(10) // 任务队列
);
executor.execute(() -> {
System.out.println("Hello ThreadPool");
});
executor.shutdown();
// 无返回值
executor.execute(Runnable);
// 有返回值
Future<String> future = executor.submit(() -> "结果");
当一个任务提交:
| 策略 | 行为 |
|---|---|
AbortPolicy |
抛异常(默认) |
CallerRunsPolicy |
调用者线程执行 |
DiscardPolicy |
直接丢弃 |
DiscardOldestPolicy |
丢弃最老任务 |
如果你愿意,我可以:
你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。