我試圖找到一個創建無限paraller流的好方法。 現在我的代碼如下所示:生成無限並行流
Stream<List<Integer>> lists =
Stream.iterate(true, x -> true)
.parallel()
.map(x ->
IntStream.rangeClosed(1, population)
.boxed()
/* ... */
.collect(toList()))
.limit(50_000);
的布爾X值是完全沒有意義的。 我居然會希望能夠做會是這個樣子僞代碼:
Stream<List<Integer>> lists1 =
Stream.parallel().generate(() ->
IntStream.rangeClosed(1, population)
.boxed()
/* ... */
.collect(toList()))
.limit(50_000);
任何很好的提示是受歡迎的。由於
你能不能用英語解釋你想做什麼?試圖解釋僞代碼會更清楚。 – Tunaki
當您創建一個無限流以將其限制爲有限個計數時,您實際上只是以低效的方式創建有限流。這是特別浪費,因爲你要做同樣的事情5萬次。例如,不要並行地執行它,你應該考慮只執行一次*,例如使用'Collections.nCopies'的結果。 – Holger