当前位置: 首页 > 知识库问答 >
问题:

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

南门正祥
2023-03-14

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

它有效率吗?

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个答案

冯霖
2023-03-14

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

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

 类似资料:
  • 下面是我的代码: 这两种方法我都试过了,但我看不出结果有什么不同。

  • 软件类型:效能桌面便签 软件性质:免费软件 操作系统:Windows 应用平台:2003/XP/Win2000/ 文件名称:EfficientStickyNotes.exe 版  本:简体中文1.40.0.58版,无插件 软件介绍: 即 时贴扔掉了传统的纸张和开始使用完全免费的高效粘滞便笺! “棒”笔记在桌面上,你可以阅读屏幕上的任何重要信息的时间。 可以节省你的钱,可以节省你的时间! 该软件允许

  • 问题内容: 在尝试学习如何从恐慌中调试堆栈跟踪时,我遇到了一些令人困惑的问题。 当我在附加的播放链接上运行它时,输出以下内容: 我无法解读第二个数字的含义(main.F(0x1,0x10436000)中的0x10436000)。如果有第二个int参数,或者作为第一个参数传递的其他内容,则不会出现(可以在第二个播放链接中看到)。 一个arg:https : //play.golang.org/p/3

  • 我对函数的契约有一些误解 返回一个新的,当此阶段正常完成时,将此阶段作为提供函数的参数执行。 函数似乎接受这个完成阶段的结果,而不是完成阶段本身。那么这是什么意思呢? 那么由返回的CompletableFuture表示的任务呢? 这是否意味着,由返回的CompletableFuture表示的任务将在与可运行r相同的线程池中执行?

  • 问题内容: 呼叫跟踪包含如下条目: ‘是什么意思?标记在AnotherFunctionName之前? 问题答案: ‘?’ 表示有关此堆栈条目的信息可能不可靠。 堆栈输出机制(请参见dump_trace()函数的实现)无法证明其找到的地址是调用堆栈中的有效返回地址。 ‘?’ 本身由printk_stack_address()输出。 堆栈条目可能有效还是无效。有时,人们可能只是跳过它。研究所涉及模块的

  • 我被CompletableFuture异常处理卡住了。 我的逻辑是发送电子邮件并保存此操作的状态。如果发送电子邮件抛出异常,我需要用异常消息保存状态。 处理器类目前有此代码。它工作正常,但对我来说并不优雅。我们如何摆脱用于在阶段之间共享状态的错误本地字段? 看起来句柄方法应该会有所帮助,但它返回可完成未来的可完成未来