CompletableFuture执行多个任务
时间: 2023-11-22 15:49:07 浏览: 228
CompletableFuture多任务执行及简单使用场景
CompletableFuture可以很方便地执行多个任务,以下是一个例子:
```java
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Result of Future 1";
});
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Result of Future 2";
});
CompletableFuture<String> future3 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Result of Future 3";
});
CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2, future3);
CompletableFuture<List<String>> allResults = allFutures.thenApply(v -> {
return Stream.of(future1, future2, future3)
.map(CompletableFuture::join)
.collect(Collectors.toList());
});
allResults.thenAccept(results -> {
results.forEach(System.out::println);
});
```
在这个例子中,我们创建了三个CompletableFuture对象,每个对象都会执行一个耗时的任务。然后我们使用CompletableFuture.allOf()方法将这三个对象组合在一起,以便在所有任务完成后执行某些操作。最后,我们使用CompletableFuture.thenApply()方法将所有结果收集到一个List中,并使用CompletableFuture.thenAccept()方法打印所有结果。
阅读全文