【发布时间】:2016-04-15 11:27:21
【问题描述】:
我想从 0 - 50 范围内生成 5 个不同的随机数,然后对它们并行执行一些操作。当我写这篇文章时,程序从未结束:
new Random().ints(0, 50)
.distinct()
.limit(5)
.parallel()
.forEach(d -> System.out.println("s: " + d));
我尝试使用 peek 对其进行调试。我有无限数量的 c: 行,50 行 d: 行,但零 l: 或 s: 行:
new Random().ints(0, 50)
.peek(d -> System.out.println("c: " + d))
.distinct()
.peek(d -> System.out.println("d: " + d))
.limit(5)
.peek(d -> System.out.println("l: " + d))
.parallel()
.forEach(d -> System.out.println("s: " + d));
我的实现有什么问题?
【问题讨论】:
-
像
IntStream.iterate(…)这样的无限流和随机数流之间的一个显着区别是随机数流并不是真正无限的,而是具有Long.MAX_VALUE的大小,甚至报告说,这可能有有趣的效果…… -
不是this question的重复,请看我的回答。
标签: java parallel-processing java-stream