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

一个Java8`流`能在不要求的情况下并行吗?

祁驰
2023-03-14
someStreamableResource.stream().whatever()

共有1个答案

黄昊
2023-03-14

一是通过规范的镜头。流是并行的还是顺序的是流状态的一部分。流创建方法应该指定它们创建的是顺序流还是并行流(JDK中的大多数方法都是这样做的),但并不要求它们这样说。如果你的流源没有说,不要假设。如果有人给你一条小溪,不要假设。

允许并行流根据自己的决定返回到顺序流(因为顺序实现是并行实现,只是一个潜在的不完美的实现);反之亦然。

现在,透过执行的镜头。在Collections和其他JDK类中的流创建方法中,我们坚持“除非用户明确要求并行性,否则创建顺序流”的原则。(然而,其他库会做出不同的选择。如果礼貌的话,它们会指定自己的行为。)

 类似资料:
  • 问题内容: 在SQL(SQL Server)中,是否可以从表的标识列中检索下一个ID(整数),而实际上无需插入行?如果删除了最近的行,则不一定是最高ID加1。 我之所以这样问,是因为我们有时不得不用新行更新活动数据库。该行的ID在我们的代码中使用(例如,Switch(ID){Case ID:},并且必须相同。如果我们的开发数据库和实时数据库不同步,最好预先预测一个行ID部署之前。 我当然可以 SE

  • 使用Java 8和lambdas可以很容易地将集合作为流进行迭代,使用并行流也同样容易。文档中的两个示例,第二个使用ParallelStream: 只要我不关心顺序,使用平行会一直是有益的吗?人们会认为在更多的核心上分配工作是更快的。 还有其他考虑吗?什么时候应该使用并行流,什么时候应该使用非并行流? (问这个问题是为了引发关于如何以及何时使用并行流的讨论,而不是因为我认为始终使用它们是一个好主意

  • 我使用的API接受单个AKKA接收器,并用数据填充: 有没有一种方法,在不深入阿卡的深度的情况下,用两个汇而不是一个汇来处理输出? 例如 如果我可以访问方法使用的Flow,我可以使用,但流不会公开。 目前唯一的解决方法是将一个处理字符串的水槽传递给两个StringBuilder,以替换,但这似乎违背了AKKA的观点。如果不花几天时间学习AKKA,我就不知道是否有办法将输出从接收器中分离出来。 谢谢

  • 我是函数式编程新手,我正在努力变得更好。 目前,我正在试验一些代码,采用以下基本形式: 首先,使用hashmap获取列表中每个数字的频率。下一步,我们总结出地图中作为键存在的键的数量。 我不喜欢的是,这两个流需要彼此分开存在,其中一个HashMap是由一个流生成的,只会被另一个流立即独占地使用。 有没有一种方法可以将其合并为一个流?我是这样想的: 但这里的问题是没有可参考的freq map,因为它

  • 例如:在2月份,它将在28日运行,但在11月30日。 我在这里看到了答案:Quartz-cron-如果一个月中的一天-不存在,但有没有更好的方法来执行它?

  • 我在Scala中有一个要求,即运行一系列http调用,这些调用必须按顺序完成且不阻塞。我怎样才能做到这一点?