温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ExecutorService是什么

发布时间:2026-07-26 10:20:51 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

ExecutorServiceJava 并发包(java.util.concurrent 中的一个接口,用来管理和控制线程的执行。它是 Java 中线程池的核心抽象,比直接使用 Thread 更安全、更高效、更易管理。


一句话理解

ExecutorService 是一个“线程池管理器”,负责提交任务、调度线程、管理生命周期。


它解决了什么问题?

不用 ExecutorService(传统方式)

new Thread(() -> {
    // 执行任务
}).start();

问题:

  • 每次创建新线程,开销大
  • 线程数量不可控
  • 无法复用线程
  • 难以管理(关闭、监控)

使用 ExecutorService

ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> {
    System.out.println("任务执行");
});

优点: ✅ 线程复用
✅ 控制并发数量
✅ 支持任务队列
✅ 支持返回值(Callable
✅ 生命周期管理


ExecutorService 的核心功能

1️⃣ 提交任务

提交 Runnable(无返回值)

executor.execute(() -> System.out.println("run"));

executor.submit(() -> System.out.println("run"));

提交 Callable(有返回值)

Future<Integer> future = executor.submit(() -> {
    return 1 + 1;
});

Integer result = future.get(); // 阻塞获取结果

2️⃣ 管理线程池生命周期

executor.shutdown();              // 不再接受新任务,等待已有任务完成
executor.shutdownNow();           // 尝试立即关闭

3️⃣ 获取执行结果

Future<?> future = executor.submit(task);
future.get();        // 阻塞等待结果
future.cancel(true); // 取消任务

常见 ExecutorService 创建方式

ExecutorService fixed = Executors.newFixedThreadPool(5);
ExecutorService cached = Executors.newCachedThreadPool();
ExecutorService single = Executors.newSingleThreadExecutor();
ScheduledExecutorService scheduled =
        Executors.newScheduledThreadPool(3);
类型 说明
FixedThreadPool 固定线程数
CachedThreadPool 线程可复用、自动扩容
SingleThreadExecutor 单线程串行执行
ScheduledThreadPool 支持定时 / 周期性任务

⚠️ 生产环境建议手动创建 ThreadPoolExecutor,而不是用 Executors 工厂方法


Executor vs ExecutorService

接口 能力
Executor 只支持执行任务
ExecutorService 支持任务管理、生命周期、返回值

简单示例(完整)

ExecutorService executor = Executors.newFixedThreadPool(2);

executor.submit(() -> System.out.println("任务1"));
executor.submit(() -> System.out.println("任务2"));

executor.shutdown();

总结

ExecutorService 是 Java 中线程池的标准接口
✅ 用于提交任务、管理线程、控制并发
✅ 是并发编程的核心组件
✅ 实际开发中几乎都会用到

如果你愿意,我可以:

  • 对比 ExecutorServiceThreadPoolExecutor
  • 结合 Spring / 实际业务场景讲
  • 讲常见坑(OOM、任务堆积、优雅关闭)
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI