Java parallelStream没有显示正确的结果
这个问题在这里已经有了答案:
我认为你的代码有count()
方法的问题。 由于parallelStream
将尝试同时执行任务。 此方法应该是synchronized
,也可以使totaleven
为Atomtic整数。 希望能帮助到你。
您可以使用终端操作Stream:count来代替使用forEach来增加计数器
例如
totaleven = randomList.stream().filter(e -> e % 2 ==0).count();
totaleven = 0;
totaleven = randomList.parallelStream().filter(e -> e % 2 ==0).count();
totaleven将需要更改为长数据类型或应用的投射。
并行流结果有什么问题? 如果它太小,那么最有可能你有totaleven++
问题,因为它不是线程安全的。 使用AtomicInteger或任何其他线程安全的解决方案。
上一篇: Java parallelStream not showing correct result
下一篇: How compute elapsed time encrypt and decrypt algorithm?