CompletableFuture thenApply thenAccept
时间: 2024-11-06 20:36:35 浏览: 5
`CompletableFuture`是Java 8引入的一个异步编程工具,它代表了一个在未来某个时间可能会完成的任务的表示形式。`thenApply`和`thenAccept`是`CompletableFuture`链式调用的两个方法,它们用于处理异步操作的结果。
1. `thenApply`: 这个方法接受一个函数作为参数,当`CompletableFuture`计算出结果后,会立即应用这个函数到结果上,并返回一个新的`CompletableFuture`。新的`CompletableFuture`的结果将是该函数对原结果的处理结果。例如:
```java
CompletableFuture.supplyAsync(() -> computeSomething())
.thenApply(result -> processResult(result))
.thenAccept(loggedResult -> log(loggedResult));
```
在这里,`computeSomething()`是一个耗时的操作,`processResult`负责处理其结果,而`log`则将处理后的结果记录日志。
2. `thenAccept`: 类似于`thenApply`,但它接收一个消费函数,即只用于副作用(如打印、更新状态等),并不返回新值。主要用于处理结果,而不是进一步的计算:
```java
CompletableFuture.supplyAsync(() -> computeSomething())
.thenAccept(result -> printToConsole(result))
.exceptionally(error -> handleException(error));
```
这里,`printToConsole`只是简单地将结果输出到控制台,如果有异常发生,则由`handleException`捕获并处理。
阅读全文