使用CompletableFuture实例代码
时间: 2023-11-17 19:01:59 浏览: 39
下面是使用CompletableFuture的示例代码:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步执行的任务
return "Hello";
}).thenApplyAsync(result -> {
// 对任务的结果进行处理
return result + " World";
}).exceptionally(ex -> {
// 处理异常情况
return "Error: " + ex.getMessage();
});
// 获取任务的结果
String result = future.get();
System.out.println(result);
```
上面的代码中,首先使用`CompletableFuture.supplyAsync()`方法创建一个异步执行的任务,然后使用`thenApplyAsync()`方法对任务的结果进行处理,最后使用`exceptionally()`方法处理异常情况。最后,使用`get()`方法获取任务的结果。
相关问题
CompletableFuture 怎么使用
CompletableFuture 是 Java 8 引入的一个类,用于处理异步操作和并发编程。它提供了一种方便的方式来处理多个异步任务的结果,并且可以以函数式编程的方式进行链式操作。
要使用 CompletableFuture,首先需要创建一个 CompletableFuture 实例,并指定任务的执行逻辑。可以使用 CompletableFuture 的静态方法 `supplyAsync()` 或 `runAsync()` 来创建 CompletableFuture。
下面是一个示例代码,演示了如何使用 CompletableFuture:
```java
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建一个 CompletableFuture 实例
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步执行的任务逻辑
return "Hello, World!";
});
// 链式操作
future.thenAccept(result -> {
System.out.println(result);
});
// 等待异步任务完成
try {
future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,我们首先使用 `supplyAsync()` 方法创建了一个 CompletableFuture 实例,该方法接收一个 Supplier 函数式接口,用于执行异步任务。然后,我们使用 `thenAccept()` 方法来处理任务完成后的结果,并在控制台打印结果。最后,我们通过调用 `get()` 方法来等待异步任务完成。
除了 `thenAccept()` 方法,CompletableFuture 还提供了许多其他方法,如 `thenApply()`、`thenCombine()`、`thenCompose()` 等,用于处理任务的结果或组合多个 CompletableFuture。你可以根据具体的业务需求选择适合的方法来使用 CompletableFuture。
CompletableFuture的whenComplete怎么使用
CompletableFuture的whenComplete是一个回调方法,可以在CompletableFuture执行完成后执行指定的操作,不管CompletableFuture正常完成还是异常完成。
whenComplete方法接收一个BiConsumer参数,该参数有两个输入参数:第一个是CompletableFuture的执行结果,第二个是Throwable,代表CompletableFuture执行过程中的异常。
下面是whenComplete的示例代码:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello");
future.whenComplete((result, throwable) -> {
if (throwable == null) {
System.out.println("Result: " + result);
} else {
System.out.println("Exception: " + throwable.getMessage());
}
});
```
在上面的示例代码中,supplyAsync方法返回了一个CompletableFuture实例,它会异步执行一个任务,在任务执行完成后,whenComplete方法会被调用,输出任务执行的结果或异常信息。