我希望生成5个不同的随机数,范围在0-50之间,并在并行执行时对它们进行某些操作。当我写下这段程序时,程序永远没有结束:
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
大小,并且甚至报告了这一点,这可能会产生有趣的影响... - Holger