gpt4 book ai didi

Scala - future 和并发

转载 作者:行者123 更新时间:2023-12-03 23:44:18 26 4
gpt4 key购买 nike

我试图了解来自 Java 背景的 Scala future :我知道你可以写:

val f = Future {   ...    }

那么我有两个问题:
  • 这个 future 是如何安排的?自动地?
  • 它将使用什么调度程序?在 Java 中,您将使用可以是线程池等的执行器。

  • 此外,我怎样才能实现 scheduledFuture ,在特定时间延迟后执行的那个?谢谢

    最佳答案

    Future { ... } block 是调用 Future.apply 的语法糖。 (我相信你知道 Maciej),将代码块作为第一个参数传递。

    看着docs for this method ,你可以看到它需要一个隐式 ExecutionContext - 正是这个上下文决定了它的执行方式。因此,要回答您的第二个问题, future 将由隐式范围内的任何 ExecutionContext 执行(当然,如果这是不明确的,这是一个编译时错误)。

    在许多情况下,这将是来自 import ExecutionContext.Implicits.global 的那个。 ,可以通过系统属性进行调整,但默认使用 ThreadPoolExecutor每个处理器核心一个线程。

    然而,调度是另一回事。对于某些用例,您可以提供自己的 ExecutionContext在执行之前总是应用相同的延迟。但是,如果您希望延迟可以从调用站点控制,那么您当然不能使用 Future.apply因为没有参数来传达应该如何安排。在这种情况下,我建议将任务直接提交给预定的执行者。

    关于Scala - future 和并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16357596/

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