CompletableFuture类使用例子
时间: 2023-04-06 21:04:30 浏览: 68
CompletableFuture类是Java 8中的一个异步编程工具,可以用于处理异步任务和回调函数。下面是一个使用CompletableFuture类的例子:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步执行的任务
return "Hello";
}).thenApplyAsync(result -> {
// 对异步任务的结果进行处理
return result + " World";
});
String result = future.get(); // 阻塞等待异步任务完成并获取结果
System.out.println(result); // 输出结果:Hello World
以上代码中,首先使用CompletableFuture.supplyAsync()方法创建了一个异步任务,该任务会在一个新的线程中执行。然后使用.thenApplyAsync()方法对异步任务的结果进行处理,并返回一个新的CompletableFuture对象。最后使用future.get()方法阻塞等待异步任务完成并获取结果。
相关问题
completablefuture代码例子
下面是一个使用CompletableFuture的简单代码例子:
```
public class CompletableFutureExample {
public static void main(String[] args) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// Simulate a long-running task
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task completed.");
});
future.thenRun(() -> System.out.println("Next task executed."));
}
}
```
在这个例子中,我们创建了一个CompletableFuture对象,然后使用runAsync()方法将一个任务提交给线程池异步执行。在该任务完成后,我们使用thenRun()方法提交另一个任务,在第一个任务完成后执行。在这个例子中,第二个任务只是简单地输出一条消息。
运行该代码将输出以下内容:
```
Task completed.
Next task executed.
```
这个例子只是CompletableFuture的一个简单用例,但它展示了如何使用CompletableFuture来并发执行异步任务,并在任务完成后执行其他操作。
stream CompletableFuture join 例子
stream CompletableFuture join 方法用于等待 CompletableFuture 完成,并返回其结果。它是一个阻塞方法,会一直等待 CompletableFuture 完成并返回结果。
下面是一个使用 stream 和 CompletableFuture 的 join 方法的例子:
```java
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
public class CompletableFutureJoinExample {
public static void main(String[] args) {
List<CompletableFuture<String>> completableFutures = Arrays.asList(
CompletableFuture.supplyAsync(() -> "Hello"),
CompletableFuture.supplyAsync(() -> "World"),
CompletableFuture.supplyAsync(() -> "!")
);
CompletableFuture<Void> allFutures = CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0]));
CompletableFuture<String> combinedFuture = allFutures.thenApply(v ->
completableFutures.stream()
.map(CompletableFuture::join)
.collect(Collectors.joining(" ")));
System.out.println(combinedFuture.join());
}
}
```
在上面的例子中,我们创建了一个包含三个 CompletableFuture 的列表。然后,我们使用 CompletableFuture 的 allOf 方法等待所有的 CompletableFuture 完成。接下来,我们使用 stream 和 join 方法来获取每个 CompletableFuture 的结果,并使用空格连接它们。最后,我们打印出连接后的结果。