写一个使用CompletableFuture的范例
时间: 2024-06-08 22:04:22 浏览: 103
CompletableFutureExamples:使用Java的CompletableFuture进行异步编程的示例
`CompletableFuture`是Java 8中引入的一个非常强大的工具,用于处理异步计算和并行执行。它提供了一种线程安全的方式来处理异步操作的结果,简化了回调地狱。以下是一个简单的范例,展示如何使用`CompletableFuture`执行异步任务:
```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(() -> {
System.out.println("开始计算");
// 模拟耗时操作,这里我们只是简单休眠
Thread.sleep(2000);
return "异步任务的结果";
});
// 主线程继续执行,不会阻塞
System.out.println("主线程正在执行其他任务...");
// 当异步任务完成后,获取结果
String result = future.get(); // 或者用future.thenApply(result -> ...)
System.out.println("最终结果: " + result);
}
}
```
在这个例子中:
1. `CompletableFuture.supplyAsync()`方法创建了一个异步任务,它在后台线程中执行,返回一个`CompletableFuture`对象。
2. `Thread.sleep(2000)`模拟了一个延迟执行的任务,实际应用中可能是数据库查询、网络请求等耗时操作。
3. `future.get()`会阻塞,直到异步任务完成并获取结果。如果不希望阻塞,可以使用`thenApply()`、`thenAccept()`或`thenRun()`等方法来处理结果。
阅读全文