我最近仔細研究了 Java 8 Stream API 并注意到有兩種方法;流()和并行流()。我了解每種方法的用途,但無法理解需要兩種方法才能達到目的。通過公開兩種方法,Java 語言設計者強制在編譯時選擇并行化(或不并行化)。顯然,使用參數/開關可以幫助將選擇推遲到運行時使用一些運行時參數/配置和 DI,這在許多情況下都是可取的。然而,設計師一定有令人信服的理由不走那條路。那些原因是什么?這將有助于了解流是如何在幕后工作的。
1 回答

開滿天機
TA貢獻1786條經驗 獲得超13個贊
您通常不想在運行時選擇:有些問題應該并行解決,有些則不應該。在 99.99% 的情況下,他們不應該這樣做。
如果您遇到過這種情況,Java 有 if 語句或三元運算符:
Stream<Foo> stream = shouldBeParallel? collection.parallelStream() : collection.stream();
我不想不得不寫和讀collection.stream(false)
(那是什么false
意思?),或者collection.stream(StreamMode.SEQUENTIAL)
每次我想要一個流。
添加回答
舉報
0/150
提交
取消