提问者:小点点

CompletableFuture后面紧跟的是get-efficient吗?


我刚刚找到以下代码,它提供了一个异步任务,但立即得到结果(因此,如果我理解正确,它会阻塞当前线程,直到结果可用为止)。

它有效率吗?

public String myMethod() {
    CompletableFuture<String> futur = CompletableFuture.supplyAsync(() -> {
       // my long call to an external API
       return "theResult";
    });
    
    try {
        return future.get(FUTURE_TIMEOUT_DURATION, TimeUnit.MINUTES);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

如果在调用外部 API 时正确处理了超时,我是否需要这个可完成的未来?

这样简化代码可以吗?

public String myMethod() {
    // my long call to an external API
    return "theResult";
}

共1个答案

匿名用户

如果您不希望出现任何超时问题,则很可能可以删除与功能相关的代码。

代码可能会使用一些线程局部变量,或者依赖于在单独的线程中执行。