CompletableFuture.allOf 如何定义一个带返回值的,在whenComplete取得结果
时间: 2024-01-06 16:25:04 浏览: 258
CompletableFuture.allOf方法用于等待所有的CompletableFuture完成。它接受一个可变参数,可以传入多个CompletableFuture对象。当所有的CompletableFuture都完成时,它会返回一个新的CompletableFuture对象,该对象的结果为null。
要定义一个带返回值的CompletableFuture,并在whenComplete方法中获取结果,可以使用CompletableFuture.supplyAsync方法。supplyAsync方法接受一个Supplier函数式接口,用于提供一个返回结果的操作。在这个Supplier函数式接口中,我们可以执行需要返回结果的操作,并将结果返回。
下面是一个示例代码,演示了如何定义一个带返回值的CompletableFuture,并在whenComplete方法中获取结果:
```java
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 执行需要返回结果的操作
return "Hello World";
});
future.whenComplete((result, exception) -> {
if (exception != null) {
System.out.println("Exception occurred: " + exception.getMessage());
} else {
System.out.println("Result: " + result);
}
});
// 等待CompletableFuture完成
future.get();
}
}
```
在上面的示例中,我们使用CompletableFuture.supplyAsync方法定义了一个带返回值的CompletableFuture。在这个CompletableFuture中,我们执行了一个简单的操作,返回了字符串"Hello World"。然后,我们使用whenComplete方法来处理CompletableFuture的结果。在whenComplete方法中,我们判断了是否有异常发生,如果有异常,则打印异常信息;如果没有异常,则打印结果。
最后,我们使用future.get()方法来等待CompletableFuture完成。这样,当CompletableFuture完成时,我们就可以在whenComplete方法中获取到结果了。
阅读全文