我最近仔细研究了 Java 8 Stream API 并注意到有两种方法;流()和并行流()。我了解每种方法的用途,但无法理解需要两种方法才能达到目的。通过公开两种方法,Java 语言设计者强制在编译时选择并行化(或不并行化)。显然,使用参数/开关可以帮助将选择推迟到运行时使用一些运行时参数/配置和 DI,这在许多情况下都是可取的。然而,设计师一定有令人信服的理由不走那条路。那些原因是什么?这将有助于了解流是如何在幕后工作的。
1 回答
开满天机
TA贡献1786条经验 获得超12个赞
您通常不想在运行时选择:有些问题应该并行解决,有些则不应该。在 99.99% 的情况下,他们不应该这样做。
如果您遇到过这种情况,Java 有 if 语句或三元运算符:
Stream<Foo> stream = shouldBeParallel? collection.parallelStream() : collection.stream();
我不想不得不写和读collection.stream(false)
(那是什么false
意思?),或者collection.stream(StreamMode.SEQUENTIAL)
每次我想要一个流。
添加回答
举报
0/150
提交
取消