我刚刚找到以下代码,它提供了一个异步任务,但立即得到结果(因此,如果我理解正确,它会阻塞当前线程,直到结果可用为止)。
它有效率吗?
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";
}
如果您不希望出现任何超时问题,则很可能可以删除与功能相关的代码。
代码可能会使用一些线程局部变量,或者依赖于在单独的线程中执行。