gpt4 book ai didi

java - 'CompletionStage' 和 'CompletableFuture' 有什么区别

转载 作者:太空狗 更新时间:2023-10-29 22:33:52 29 4
gpt4 key购买 nike

我在它们每个中都看到了一个示例,但我需要确切地知道 deep 中的区别是什么,因为有时我认为我可以同时使用它们来获得相同的结果,所以我想知道以便我可以选择正确的?

使用它们各自有什么好处?

就像这个例子一样:

public CompletionStage<Result> getNextQueryUUID() {
return CompletableFuture.supplyAsync(() -> {
String nextId = dbRequestService.getNextRequestQueryUUID();
return ok(nextId);
}, executor);
}


public CompletableFuture<Result> getNextQueryUUID() {
return CompletableFuture.supplyAsync(() -> {
String nextId = dbRequestService.getNextRequestQueryUUID();
return ok(nextId);
}, executor);
}

This example run in Play framework.

最佳答案

CompletionStage<T> 是一个接口(interface),其中 CompletableFuture<T> 是当前唯一的实现类。通过查看 CompletionStage<T> 的 javadoc ,您会注意到它提供了获取一个 CompletionStage<T> 的方法。并将其转换为另一个 CompletionStage<T> .但是,CompletionStage<T> 的返回值其实都是自己CompletabeFuture<T>对象。

所以使用 CompletabeFuture<T>与使用 CompletionStage<T> 有点相同但后者可以用作将来可能的新类的基础接口(interface),也可以作为许多降序类型的目标类型,就像我们倾向于做的那样 List<Integer> integerList = new ArrayList<>();而不是 ArrayList<Integer> integerList = new ArrayList<>();

关于java - 'CompletionStage' 和 'CompletableFuture' 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47571117/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com