completablefuture组装list
时间: 2023-11-24 17:46:29 浏览: 166
您可以使用`CompletableFuture`来组装一个`List`。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) throws InterruptedException, ExecutionException {
List<CompletableFuture<String>> futures = new ArrayList<>();
// 创建多个CompletableFuture并添加到列表中
futures.add(CompletableFuture.supplyAsync(() -> "Hello"));
futures.add(CompletableFuture.supplyAsync(() -> "World"));
futures.add(CompletableFuture.supplyAsync(() -> "CompletableFuture"));
// 组装CompletableFuture列表,等待所有CompletableFuture都完成
CompletableFuture<Void> allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
// 等待所有CompletableFuture完成后,提取结果并放入新的List中
CompletableFuture<List<String>> resultFuture = allFutures.thenApply(v ->
futures.stream()
.map(CompletableFuture::join)
.collect(Collectors.toList())
);
// 等待结果
List<String> resultList = resultFuture.get();
System.out.println(resultList);
}
}
```
这个示例创建了3个`CompletableFuture`,每个都会返回一个字符串。然后,使用`CompletableFuture.allOf()`方法等待所有的`CompletableFuture`都完成。完成后,通过`thenApply()`方法提取每个`CompletableFuture`的结果,并将结果放入一个新的`List`中。
阅读全文