温馨提示×

温馨提示×

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

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

如何用ExecutorService提交任务

发布时间:2026-10-27 11:08:50 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

在 Java 中,ExecutorService 是 Java 并发包(java.util.concurrent)提供的一个线程池接口,用来提交和管理任务。下面从基础到常见用法给你讲清楚。


一、创建 ExecutorService

常见几种方式:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

// 固定线程数
ExecutorService executor = Executors.newFixedThreadPool(4);

// 单线程
ExecutorService single = Executors.newSingleThreadExecutor();

// 缓存线程池(按需创建)
ExecutorService cached = Executors.newCachedThreadPool();

⚠️ 实际项目中更推荐用 ThreadPoolExecutor 手动构造,方便控制参数。


二、提交任务的三种方式

1️⃣ 提交 Runnable(无返回值)

executor.submit(() -> {
    System.out.println("任务执行中");
});

或:

Runnable task = () -> System.out.println("Hello");
executor.submit(task);

2️⃣ 提交 Callable(有返回值)

import java.util.concurrent.Callable;
import java.util.concurrent.Future;

Callable<Integer> task = () -> {
    return 1 + 2;
};

Future<Integer> future = executor.submit(task);

获取结果:

Integer result = future.get(); // 会阻塞
System.out.println(result);

3️⃣ 提交多个任务(批量)

List<Callable<String>> tasks = new ArrayList<>();
tasks.add(() -> "A");
tasks.add(() -> "B");

List<Future<String>> futures = executor.invokeAll(tasks);

或只取第一个完成的:

String result = executor.invokeAny(tasks);

三、关闭 ExecutorService

非常重要,不然程序不会退出

executor.shutdown(); // 不再接受新任务

如果需要等待任务完成:

executor.shutdown();
executor.awaitTermination(10, TimeUnit.SECONDS);

强制关闭:

executor.shutdownNow();

四、完整示例

ExecutorService executor = Executors.newFixedThreadPool(2);

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

Future<Integer> future = executor.submit(() -> 10 + 20);

System.out.println(future.get());

executor.shutdown();

五、常见注意点

✅ submit 不会抛异常,异常在 Future.get() 中
✅ execute 只能跑 Runnable,不返回 Future
✅ 线程池必须关闭
✅ 不要手动 new Thread() 代替线程池


如果你愿意,我也可以帮你:

  • 写 ThreadPoolExecutor 参数详解
  • 对比 submit vs execute
  • 结合 Spring @Async 使用

你现在是准备面试,还是项目里在用?

向AI问一下细节

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

AI
助
手