Java parallelStream没有显示正确的结果

这个问题在这里已经有了答案:

  • 我如何在Java中编写正确的微基准测试? 11个答案

  • 我认为你的代码有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或任何其他线程安全的解决方案。

    链接地址: http://www.djcxy.com/p/86549.html

    上一篇: Java parallelStream not showing correct result

    下一篇: How compute elapsed time encrypt and decrypt algorithm?