在 Java 中,ExecutorService 是 java.util.concurrent 包提供的线程池接口,用来提交和管理任务。常见提交任务的方式有以下几种:
Runnable 任务(无返回值)ExecutorService executor = Executors.newFixedThreadPool(2);
executor.execute(() -> {
System.out.println("Runnable 任务执行");
});
特点:
Callable 任务(有返回值)ExecutorService executor = Executors.newFixedThreadPool(2);
Future<String> future = executor.submit(() -> {
return "任务结果";
});
String result = future.get(); // 阻塞等待结果
特点:
Future 获取结果或异常invokeAll(等待全部完成)List<Callable<String>> tasks = List.of(
() -> "任务1",
() -> "任务2"
);
List<Future<String>> futures = executor.invokeAll(tasks);
FutureinvokeAny(任意一个完成即可)String result = executor.invokeAny(tasks);
任务提交后必须关闭线程池:
executor.shutdown(); // 不再接受新任务
// 或
executor.shutdownNow(); // 尝试中断正在执行的任务
| 方法 | 是否返回值 | 异常处理 | 使用场景 |
|---|---|---|---|
| execute | 否 | 线程级异常 | 简单异步任务 |
| submit | 是(Future) | 可通过 Future 获取 | 需要结果或异常 |
如果你有具体使用场景(如定时任务、批量处理、Spring 环境等),我可以给你更合适的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。