java CompletableFuture如何开启3个线程处理3个不同的任务
时间: 2024-11-03 15:22:12 浏览: 6
在Java中,`CompletableFuture`是一个非常强大的工具,它允许异步编程并提供了一种线程池式的并发模型。如果你想用`CompletableFuture`开启3个线程处理3个不同的任务,可以按照以下步骤操作:
1. 创建三个独立的`Future`对象:每个`Future`代表一个单独的任务。你可以通过`ExecutorService`(如`ThreadPoolExecutor`)创建线程池,并提交任务到其中。
```java
ExecutorService executor = Executors.newFixedThreadPool(3); // 创建一个包含3个线程的线程池
CompletableFuture<Void> task1 = CompletableFuture.runAsync(() -> {
// 任务1的代码
}, executor); // 提交任务1到线程池
CompletableFuture<Void> task2 = CompletableFuture.runAsync(() -> {
// 任务2的代码
}, executor);
CompletableFuture<Void> task3 = CompletableFuture.runAsync(() -> {
// 任务3的代码
}, executor);
```
2. 等待所有任务完成:如果你想要等待所有任务完成后继续,可以使用`whenAllComplete`方法,它会返回一个新的`CompletableFuture`,当所有的输入`CompletableFuture`都已完成时完成。
```java
CompletableFuture.allOf(task1, task2, task3) // 等待所有任务完成
.thenAccept(v -> {
executor.shutdown(); // 关闭线程池
System.out.println("所有任务已全部完成");
});
```
这样,你就开启了3个线程分别处理3个不同的任务,而且`CompletableFuture`提供了同步机制,使得整个过程易于管理。
阅读全文