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

流在顺序模式下工作,但在并行模式下有缺陷

彭展
2023-03-14
public static int multiplyThrough(List<Integer> linkedListOfNumbers) {
    return linkedListOfNumbers.parallelStream()
                       .reduce(5, (acc, x) -> x * acc);
}
public static int multiplyThrough(List<Integer> numbers) {
    return 5 * numbers.parallelStream()
                      .reduce(1, (acc, x) -> x * acc);
}

我不明白为什么first方法在并行模式下是有缺陷的,而且书中没有解释。

拜托,解释一下。

共有1个答案

谷梁宝
2023-03-14

javadoc表示:

标识值必须是累加器函数的标识。这意味着对于所有t,accumulator.apply(identity,t)等于t。累加器函数必须是关联函数。

在您的第一个示例中显然不是这样:

 类似资料:
  • 我有一个应用程序,现在我要发布它。我已经创建了一个apk文件,并且安装了它,但是当我向服务器发送登录请求时,它返回NULL。 奇怪的是,当我用调试构建启动应用程序时,它工作得很好。该问题仅发生在释放模式。所以看了这篇文章后我认为问题出在proguard 这是我目前所做的。 null 这是我的proguard-rules.pro文件。

  • 当spark作业中有需要的jar文件时,需要通过2种方式将其添加到spark作业中: 1。命令中的选项。 2。。 有人能告诉我这两种方式之间的区别吗? 从这个问题来看,答案是它们是相同的,只是优先级不同,但我认为这不是真的。如果我在yarn集群模式下提交spark作业,那么根据官方站点,如果命令中的选项中没有包含jar文件,那么addJar()将不起作用。 如果您将sparkcontext.add

  • 但是当我启动服务器时,这个url不起作用: 出现错误警报: 有什么想法吗? 谢谢你,泰金。

  • 我试图详细学习JavaEE7,但我在从数据库中获取记录并在JSF页面上显示它们方面遇到了问题。 我使用Wildfly10.1.0和Oracle XE11。我创建了以下数据源: 在JBoss的管理接口中的连接测试是成功的。 这是我的: 当我通过运行WildFly,并通过部署我的应用程序时,它可以工作。 当我在Eclipse中启动服务器并尝试使用相同的命令部署应用程序时,它失败了--因为我添加了JPA