ExecutorService 是 Java 并发编程中的一个接口,位于 java.util.concurrent 包下,用于对线程池进行统一的管理和调度。
ExecutorService 是 Executor 接口的子接口,主要作用是:
把“任务的提交”和“任务的执行”解耦
你只需要把任务(Runnable / Callable)提交给它,至于用哪个线程执行、什么时候执行、线程如何复用,都由它背后的线程池来决定。
如果没有 ExecutorService,你可能会写:
new Thread(() -> {
// 执行业务
}).start();
问题:
使用 ExecutorService 可以:
通常通过工具类 Executors 创建:
ExecutorService executor = Executors.newFixedThreadPool(10);
常见类型:
newFixedThreadPool(n):固定大小线程池newCachedThreadPool():可缓存线程池newSingleThreadExecutor():单线程newScheduledThreadPool(n):支持定时任务⚠️ 实际项目中更推荐用
ThreadPoolExecutor手动创建,避免资源失控
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.execute(() -> {
System.out.println("任务执行");
});
Future<Integer> future = executor.submit(() -> {
return 1 + 2;
});
Integer result = future.get(); // 阻塞获取结果
一定要关闭,否则程序不会退出
executor.shutdown(); // 不再接受新任务,等待已有任务完成
// 或
executor.shutdownNow(); // 尝试中断任务
| 方法 | 说明 |
|---|---|
execute(Runnable) |
提交无返回任务 |
submit(Callable/Runnable) |
提交任务,返回 Future |
shutdown() |
平滑关闭 |
shutdownNow() |
立即关闭 |
awaitTermination() |
等待终止 |
ExecutorService是 Java 中用于管理线程池、提交异步任务并控制并发执行的核心接口。
如果你愿意,我也可以帮你画一张线程池执行流程图,或者结合 Spring / 实际业务场景 讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。