CompletableFuture如何实现异步调用?
时间: 2023-11-25 17:50:19 浏览: 86
spring boot中使用@Async实现异步调用任务
CompletableFuture可以通过多种方式实现异步调用,其中最常用的方式是使用supplyAsync()方法。该方法接受一个Supplier类型的参数,该参数是一个lambda表达式或方法引用,用于在新的线程中执行异步任务并返回结果。下面是一个简单的示例代码:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步执行的任务
return "Hello, world!";
});
// 获取异步执行的结果
String result = future.get();
System.out.println(result);
```
在上面的示例中,我们使用supplyAsync()方法创建了一个CompletableFuture对象,并在lambda表达式中定义了异步执行的任务。然后,我们可以使用get()方法获取异步执行的结果。由于get()方法会阻塞当前线程,直到异步任务执行完成并返回结果,因此我们通常会在另一个线程中调用get()方法,以避免阻塞主线程。
除了supplyAsync()方法,CompletableFuture还提供了一系列其他方法,如thenApply()、thenAccept()、thenRun()等,用于在异步任务执行完成后执行一些操作。这些方法可以链式调用,从而实现更加复杂的异步调用逻辑。
阅读全文