CompletableFuture.supplyAsync举个例子详细讲解
时间: 2024-03-06 09:44:34 浏览: 133
java.util.concurrent.CompletableFuture AP介绍和简单案例1
CompletableFuture.supplyAsync是Java 8中引入的一个类,用于支持异步编程和并发操作。它可以将一个计算任务异步执行,并返回一个Future对象,该对象可以用于获取计算结果。
下面是一个例子来详细讲解CompletableFuture.supplyAsync的使用:
```java
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建一个CompletableFuture对象,使用supplyAsync方法执行一个计算任务
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 模拟一个耗时的计算任务
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello, CompletableFuture!";
});
// 使用thenApply方法对计算结果进行处理
CompletableFuture<String> processedFuture = future.thenApply(result -> {
// 对计算结果进行处理,这里将结果转换为大写
return result.toUpperCase();
});
try {
// 获取最终的计算结果
String result = processedFuture.get();
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
```
在上面的例子中,我们首先创建了一个CompletableFuture对象,使用supplyAsync方法执行一个计算任务。这个计算任务是一个Lambda表达式,模拟了一个耗时的操作,即线程休眠2秒后返回字符串"Hello, CompletableFuture!"。
接下来,我们使用thenApply方法对计算结果进行处理。thenApply方法接受一个Function函数式接口作为参数,用于对计算结果进行转换。在这个例子中,我们将结果转换为大写。
最后,我们通过调用get方法获取最终的计算结果。get方法会阻塞当前线程,直到计算完成并返回结果。
阅读全文