为什么 Scala 的 Future 没有 .get / get(maxDuration) 方法,迫使我们求助于 Await.result() 呢?

2023-11-22

解耦有什么特别的好处吗?get方法从Future类(我希望它驻留在其中),并强制编码器必须了解这个名为的外部两种方法类Await?


解耦有什么特别的好处吗?get方法从Future class

是的,让开发商很难做错误的事情. A Future表示将在将来完成并且在当前调用点可能不可用的计算。如果您需要阻止未来,为什么不同步执行它呢?在线程池上调度它有什么意义,浪费了一个完美的线程池线程?

The 文件说:

封锁未来之外

如前所述,为了性能和防止死锁,强烈建议不要阻塞 future。期货的回调和组合器是使用其结果的首选方式。然而,在某些情况下,阻塞可能是必要的,并且由 Futures and Promises API 支持。

甚至连Await对象文档:

虽然偶尔有用,例如对于测试,建议您尽可能避免使用 Await,而使用回调和 onComplete 等组合器,并使用 in 进行理解。 Await 将阻塞其运行的线程,并可能导致性能和死锁问题。

你可以看到语言设计者有意想要这种效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Scala 的 Future 没有 .get / get(maxDuration) 方法,迫使我们求助于 Await.result() 呢? 的相关文章

  • 具有上限的联合类型

    我正在遵循这个问题的公认答案中提出的技术如何定义 类型析取 联合类型 https stackoverflow com questions 3508077 does scala have type disjunction union type
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • Scala:什么是 CompactBuffer?

    我试图弄清楚 CompactBuffer 的含义 和迭代器一样吗 请解释其中的差异 根据 Spark 的文档 它是 ArrayBuffer 的替代方案 可以提供更好的性能 因为它分配的内存更少 以下是 CompactBuffer 类文档的摘
  • 使用 Scala 获取 Spark 数据集中最新时间戳对应的行

    我对 Spark 和 Scala 比较陌生 我有一个具有以下格式的数据框 Col1 Col2 Col3 Col 4 Col 5 Col TS Col 7 1234 AAAA 1111 afsdf ewqre 1970 01 01 00 00
  • 如何在映射中将字符串转换为 Seq[String]

    我有一个Map String String 以及需要的第三方功能Map String Seq String 有没有一种简单的方法来转换它 以便我可以将地图传递给函数 original mapValues Seq 注意mapValues返回地
  • Scala中有类似Java Stream的“peek”操作吗?

    在Java中你可以调用peek x gt println x 在 Stream 上 它将对每个元素执行操作并返回原始流 这与 foreach 不同 foreach 是 Unit Scala 中是否有类似的东西 最好是适用于所有 Monady
  • scala中的反引号有什么用[重复]

    这个问题在这里已经有答案了 我在一本书上找到了以下代码 val list List 5 4 3 2 1 val result 0 list running total next element running total next elem
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • Akka-Streams 收集数据(Source -> Flow -> Flow (collect) -> Sink)

    我对 Scala 和 Akka 完全陌生 我有一个简单的 RunnableFlow Source gt Flow do some transformation gt Sink runForeach 现在我想要这样的东西 Source gt
  • 如何执行仅匹配正则表达式的测试?

    在 sbt 0 10 1 中 我经常使用test only缩小我的测试数量 sbt gt test only com example MySpec 但是 我想缩小范围 以便只运行名称 描述与正则表达式匹配的测试 是否有一些语法可以实现这样的
  • Spark 2.2 无法将 df 写入 parquet

    我正在构建一个聚类算法 我需要存储模型以供将来加载 我有一个具有以下架构的数据框 val schema new StructType add StructField uniqueId LongType add StructField tim
  • 如何将 Java 地图转换为在 Scala 中使用?

    我正在开发一个 Scala 程序 该程序调用 Java 库中的函数 处理结果并生成 CSV 有问题的 Java 函数如下所示 Map
  • Kafka 分区键无法正常工作

    我正在努力解决如何正确使用分区键机制的问题 我的逻辑是设置分区号为3 然后创建三个分区键为 0 1 2 然后使用分区键创建三个KeyedMessage 例如 KeyedMessage 主题 0 消息 KeyedMessage 主题 1 消息
  • Scala:类型参数中的问号

    我试图理解以下代码 来自 Scalaz 库 def kleisliIdApplicative R Applicative Kleisli Id R 我假设一种形式T P0 是一个带有参数的类型构造函数 但是我无法找到解释类型参数中问号用法的
  • 如何关闭 Scala 中因方法重载而导致代码无法编译的特定隐式?

    我正忙着尝试自己回答这个问题 Scala Play 2 4 x 通过 anorm MySQL 处理扩展字符到 Java Mail https stackoverflow com questions 31417718 scala play 2
  • 如何在不从 DataFrame 转换并访问它的情况下向数据集添加列?

    我知道使用以下方法将新列添加到 Spark 数据集的方法 withColumn and a UDF 它返回一个 DataFrame 我还知道 我们可以将生成的 DataFrame 转换为 DataSet 我的问题是 如果我们仍然遵循传统的
  • 火花内存不足

    我有一个文件夹 里面有 150 G 的 txt 文件 大约 700 个文件 平均每个 200 MB 我使用 scala 来处理文件并最终计算一些汇总统计数据 我认为有两种可能的方法可以做到这一点 手动循环所有文件 对每个文件进行计算并最终合
  • sbt 找不到启动器 jar:./bin/sbt-launch.jar

    我已经成功地使用 sbt 进行基本的 Scala 编译好几年了 但有一天它由于某种原因停止工作 我在自己的帐户中使用它 但我决定让我的系统管理员在我们的本地网络上安装最新版本 当我尝试运行它时 我得到 找不到启动器 jar bin sbt
  • 解决 sbt 中 jar 加载冲突的问题

    当两个特定的 sbt 插件启动时 我在 sbt 启动时收到以下错误加在一起到其构建定义中的项目 这些 sbt 插件之一是规模化jdbc https github com scalikejdbc scalikejdbc另一个是my own h
  • Scala 为了在 JVM 上运行做出了哪些妥协?

    Scala 是一种很棒的语言 但我想知道如果它有自己的运行时 如何改进 IE 由于 JVM 的选择 做出了哪些设计选择 我所知道的两个最重要的妥协是 类型擦除 http java sun com docs books tutorial ja

随机推荐

  • 当另一个视图控制器显示在 UIPresentationController 之上时,UIPresentationController 会更改大小

    我正在使用 UIPresentationController 展示一个模式视图控制器 我使用以下方法将presentedView 的框架设置为小于containView 的边界 override func frameOfPresentedV
  • mutex.Lock() 如何知道要锁定哪些变量?

    我是个新手 所以请温柔一点 所以我已经在我的一些代码中使用互斥体几周了 我理解其背后的概念 锁定对特定资源的访问 与其交互 读或写 然后再次为其他资源解锁 我使用的互斥体代码主要是复制粘贴调整 代码运行了 但我仍在尝试了解它的内部工作原理
  • 按日期对文件排序

    我在网上找到了这个目录检查代码并稍微修改了一下 这样它就会打印出添加的文件 有一个浮标时不时地向我发送读数 但有时连接会丢失 而不是一个文件 而是发送多个文件 我需要该程序按创建日期对它们进行排序 有没有办法做到这一点 import os
  • 为什么 Java 和 C# 有位移运算符?

    整数乘法 暂时忘记除法 之间的差异是否仍然有利于移位 如果是的话 差异有多大 它看起来只是一个低级优化 即使您想要它 在大多数情况下 C Java 字节码编译器或 jit 不应该捕获它吗 注意 我测试了 C 的编译输出 使用 gmcs Mo
  • 设置 UITextField 的最大字符长度

    如何设置一个文件的最大字符数UITextField当我加载一个iPhone SDK时UIView 虽然UITextField类没有最大长度属性 通过设置文本字段的值来获得此功能相对简单delegate并实现以下委托方法 Objective
  • 在运行时,如何测试属性是否是只读的?

    我正在自动生成代码 根据配置 文本框 dateTimePickers 等 创建 winform 对话框 这些对话框上的控件是从保存的数据集填充的 需要设置和获取各种控制对象 自定义或其他 的属性 Upon opening of form p
  • x86 CPU 有多少条内存屏障指令?

    我发现 x86 CPU 有以下内存屏障指令 mfence lfence and sfence x86 CPU 是否只有这三个内存屏障指令 还是还有更多 sfence 上交所1 和mfence lfence SSE2 是唯一以其内存栅栏 屏障
  • Oracle 基于列值的唯一约束

    我有以下独特的约束 dup Checklist QNum UNIQUE QUESTION NO IS ACTIVE 我试图防止两个问题在活动状态下具有相同的问题编号 IS ACTIVE 值 1 一切看起来都很好 直到我不得不第二次回答一个问
  • 如何持续通知用户 Perl CGI 脚本的进度?

    我的 Apache 服务器的 cgi bin 文件夹中有这个 Perl 脚本 usr bin perl use strict use warnings 1 print Content type text html r n r n print
  • GitHub 操作发布标签

    在 GitHub 中创建发布后 我会触发 GitHub 操作 在此操作中 我想从发布中获取一些数据 这可能吗 例如 我想获取标签 然后使用这个标签作为NuGet包版本 有没有办法从工作中获取这些数据 您可以使用 github ref or
  • 如何获取从 iPhone 的照片库中选取的图像的名称?

    我正在从 iphone 应用程序的照片库中挑选一张图像 我将如何检索实际的图像名称 在 h类中 UIImageView imageView UIButton choosePhotoBtn 在 m 级 IBAction getPhoto id
  • 使用 Java 的递归表达式计算器

    我将编写一个仅执行加法和减法的表达式计算器 我有一个简单的算法可以做到这一点 但是 我有一些实施问题 我将表达式视为 它是一个字符串
  • Google Analytics API 创建新属性

    我遇到的问题是 当我尝试使用 Google Analytics Api 插入新的网络属性时 出现错误 reason 权限不足 message 您的项目无权访问此功能 即使我使用该页面时也是如此 https developers google
  • BufferedImage getRGB 与 Raster getSample

    我正在尝试用 Java 进行一些图像处理 我使用 ImageIO 库来读取和写入图像 我可以通过以下两种方式读取图像像素值 可能还有其他方法不知道 使用 BufferedImage 的 getRGB 方法 像素 image getRGB x
  • “BindingSource 不能是其自己的数据源” - 尝试从另一个类中的方法重置绑定源时出错

    我们正在绑定一个DataGridview using BindingSource 所以在主线程中我们是这样给出的 class1BindingSource new BindingSource class1BindingSource DataS
  • 替代用户在 django admin 中选择界面以减少大型网站的页面大小?

    我有一个基于 Django 的网站 包含大约 300 000 个 User 对象 具有外键字段的对象的管理页面用户需要very加载时间较长 因为生成的表单大小约为 6MB 当然 生成的下拉菜单也不是特别有用 有没有现成的替代品可以处理这种情
  • 禁用水平滚动[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 好吧 由于某种原因 我的网页从左向右滚动并显示出很多难看的空间 我已经搜索了结果 但他们只是制作了滚动条HIDDEN 这就是我现在想要的 我想要身体上的DISABLE水平滚动功能 我不希望
  • 在 HTML 中嵌入 SVG 中嵌入 HTML?

    允许在 HTML 中嵌入 SVG
  • 为什么我们不将 C++ main 方法放在一个类中呢?

    在 C 中 为什么我们不将 main 方法放在类中 如 Java 为什么这样做没有意义 我认为 We can main不是保留字 但根据语言标准 C 工具链期望程序的入口点是main在全球范围内 所以main类内部不会被识别为程序的入口点
  • 为什么 Scala 的 Future 没有 .get / get(maxDuration) 方法,迫使我们求助于 Await.result() 呢?

    解耦有什么特别的好处吗 get方法从Future类 我希望它驻留在其中 并强制编码器必须了解这个名为的外部两种方法类Await 解耦有什么特别的好处吗 get方法从Future class 是的 让开发商很难做错误的事情 A Future表