gpt4 book ai didi

java - 在这方面,Future 和 Completable future 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 09:40:48 25 4
gpt4 key购买 nike

用例示例

在以下示例中使用 future 与 completable future 有什么区别。

我读到的主要用途之一是使用 .apply() 在未来可以连接多个方法。

Future 的情况不就是在 method() 中连接方法并在单独的线程中调用该 method() {连接它们}吗?

我发现他们都在做同样的事情。谁能解释一下吗?

class FutureExample {

static boolean method1() {
return true;
}
static boolean method2(boolean m) {
return m;
}

static boolean method() {
boolean v = method1();
return method2(v);
}

public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(1); //initialize to 1 for stackoverflow question
Future<Boolean> future = service.submit(FutureExample::method);
}
}

VERSUS

class CompletableFutureExample {

static boolean method1() {
return true;
}
static boolean method2(boolean m) {
return m;
}

public static void main(String[] args) {
CompletableFuture<Boolean> future = CompletableFuture.supplyAsync(CompletableFutureExample::method1).thenApply(CompletableFutureExample::method2);
}
}

最佳答案

  1. 在第一种情况下(仅限 Future):

    • 这两个方法始终在同一个线程中执行,并且该线程将被阻塞,直到两个函数都完成

    • 没有异步异常处理

    • 您无法轻松组合/修改执行链:您始终需要为每个函数组合声明一个新方法

在此特定示例中,差异并不显着。真正的力量当您需要组合/合并不同异步调用的结果、处理整个链的异常、管理线程等时,CompletableFuture(或者更一般地说 - CompletionStage)就会出现。

关于java - 在这方面,Future 和 Completable future 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57089631/

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