completablefuture使用案例
时间: 2023-07-11 16:35:16 浏览: 101
CompletedFuture
CompletableFuture是Java 8中引入的一个非常强大的异步编程工具,可以帮助我们方便地实现异步编程。
下面是一个使用CompletableFuture的简单示例:
```
import java.util.concurrent.CompletableFuture;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建一个CompletableFuture对象
CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
// 模拟一个耗时操作
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello, CompletableFuture!";
});
// 注册一个回调函数,当CompletableFuture完成时自动调用该函数
completableFuture.thenAccept(result -> System.out.println(result));
// 阻塞当前线程,等待CompletableFuture完成
completableFuture.join();
}
}
```
该示例中,我们创建了一个CompletableFuture对象,使用`supplyAsync`方法指定了一个耗时操作,然后注册了一个回调函数,当CompletableFuture完成时自动调用该函数。最后,我们调用`join`方法阻塞当前线程,等待CompletableFuture完成。
当完成时,CompletableFuture会自动调用回调函数,输出字符串`Hello, CompletableFuture!`。
除了`thenAccept`方法,CompletableFuture还支持很多其他方法,例如:
- `thenApply`: 对CompletableFuture的结果进行转换并返回一个新的CompletableFuture对象。
- `thenCompose`: 对CompletableFuture进行链式操作,将一个CompletableFuture的结果传递给另一个CompletableFuture。
- `exceptionally`: 处理CompletableFuture执行过程中发生的异常情况。
- `allOf`: 等待多个CompletableFuture都完成。
- `anyOf`: 等待多个CompletableFuture中的任意一个完成。
这些方法的详细说明可以参考Java官方文档。
阅读全文