流()和并行流()。为什么 API 开发人员采用两种方法?

我最近仔细研究了 Java 8 Stream API 并注意到有两种方法;流()并行流()

我了解每种方法的用途,但无法理解需要两种方法才能达到目的。通过公开两种方法,Java 语言设计者强制在编译时选择并行化(或不并行化)。

显然,使用参数/开关可以帮助将选择推迟到运行时使用一些运行时参数/配置和 DI,这在许多情况下都是可取的。然而,设计师一定有令人信服的理由不走那条路。那些原因是什么?这将有助于了解流是如何在幕后工作的。


动漫人物
浏览 86回答 1
1回答

开满天机

您通常不想在运行时选择:有些问题应该并行解决,有些则不应该。在 99.99% 的情况下,他们不应该这样做。如果您遇到过这种情况,Java 有 if 语句或三元运算符:Stream<Foo>&nbsp;stream&nbsp;=&nbsp;shouldBeParallel?&nbsp;collection.parallelStream()&nbsp;:&nbsp;collection.stream();我不想不得不写和读collection.stream(false)(那是什么false意思?),或者collection.stream(StreamMode.SEQUENTIAL)每次我想要一个流。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java