CompletableFuture的异步回调方法有哪些?
时间: 2024-08-09 17:01:35 浏览: 61
`CompletableFuture` 提供了几种用于处理异步操作完成后的回调方法:
### 1. `thenAccept`
当异步操作完成后,此方法会被调用,它接收一个参数并执行相应操作。
```java
CompletableFuture.supplyAsync(() -> "Hello").thenAccept(result -> System.out.println(result));
```
### 2. `thenApply`
类似于 `thenAccept`,但它还接受一个转换函数作为参数,用于在回调时转换结果。
```java
CompletableFuture.supplyAsync(() -> "Hello").thenApply(str -> str.toUpperCase()).thenAccept(System.out::println);
```
### 3. `thenCombine`
此方法允许您将两个 `CompletableFuture` 结果合并成一个新的 `CompletableFuture` 并执行回调。
```java
CompletableFuture<String> future1 = CompletableFuture.completedFuture("A");
CompletableFuture<String> future2 = CompletableFuture.completedFuture("B");
future1.thenCombine(future2, (a, b) -> a + b).thenAccept(System.out::println); // 输出 "AB"
```
### 4. `thenRun`
与 `thenAccept` 类似,但不返回结果,主要用于执行某些操作。
```java
CompletableFuture.runAsync(() -> {
System.out.println("Doing something...");
});
```
### 5. `whenComplete`
当异步操作完成时,此方法会被调用,并可以接收一个处理异常的方法以及另一个可选的操作方法。
```java
CompletableFuture.supplyAsync(() -> {
throw new RuntimeException("Oops!");
}).whenComplete((result, ex) -> {
if (ex != null) {
System.err.println(ex.getMessage());
}
});
```
这些回调方法可以帮助您更好地组织和管理异步操作的结果和错误处理流程。每个方法都有特定的应用场景,选择合适的回调可以根据您的具体需求优化代码结构和逻辑。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)