CompletableFuture<String>
时间: 2024-08-20 21:00:59 浏览: 41
Java8PromisesWithCompletableFuture:演示将CompletableFuture回调API与JUnit测试结合使用的测试用例
`CompletableFuture<String>` 是Java 8引入的一个并发工具类,用于异步编程,它代表了一个可能尚未完成的未来计算结果。如果你想演示它的用法,可以这样操作:
首先,创建一个CompletableFuture并延迟执行一个任务,比如从网络获取一个字符串:
```java
CompletableFuture.supplyAsync(() -> {
// 异步加载数据
String response = loadStringFromNetwork();
return response;
}, Executors.newSingleThreadExecutor()); // 使用单独线程执行任务
```
这里,`supplyAsync` 方法接受一个 lambda 表达式作为参数,当这个表达式被执行时,会返回一个新的 `CompletableFuture` 对象,表示后续的数据获取。
然后,你可以通过 `thenApply` 或 `thenAccept` 方法来处理得到的结果,当原任务完成后:
```java
CompletableFuture<String> future = ...; // 前面创建的CompletableFuture
future.thenApply(response -> {
// 处理响应数据
processResponse(response);
return null; // 返回null,因为字符串不需要进一步转换
}).exceptionally(e -> {
// 处理可能出现的异常
handleException(e);
return null;
});
```
如果想获取最终结果,可以使用 `join` 或 `get` 方法阻塞当前线程直到任务完成,但通常不推荐在主线程上这样做,因为它可能会导致UI冻结。
阅读全文