java 8中的parallelStream()保证顺序吗?

2024-04-16

我试图理解的行为parallelStream()在java 8中。这是我的示例代码。

List<Person> javaProgrammers = new ArrayList<Person>() {
    {
        add(new Person("Elsdon", "Jaycob", "Java programmer", "male", 43, 2000));
        add(new Person("Tamsen", "Brittany", "Java programmer", "female", 33, 1500));
        add(new Person("Floyd", "Donny", "Java programmer", "male", 33, 1800));
        add(new Person("Sindy", "Jonie", "Java programmer", "female", 32, 1600));
        add(new Person("Vere", "Hervey", "Java programmer", "male", 22, 1200));
        add(new Person("Maude", "Jaimie", "Java programmer", "female", 33, 1900));
        add(new Person("Shawn", "Randall", "Java programmer", "male", 33, 2300));
        add(new Person("Jayden", "Corrina", "Java programmer", "female", 33, 1700));
        add(new Person("Palmer", "Dene", "Java programmer", "male", 33, 2000));
        add(new Person("Addison", "Pam", "Java programmer", "female", 34, 1300));
    }
};

System.out.println("Serial:" + javaProgrammers.stream().filter(person -> person.age == 33).findFirst().toString());
System.out.println("Parallel:" + javaProgrammers.parallelStream().filter(person -> person.age == 33).findFirst().toString());

这里我比较一下stream() and parallelStream(),我期望Brittany Tamsen总是返回stream()打电话,因为这是第一场比赛。但对于parallelStream()我不期望Brittany Tamsen待退回always因为它可以是任何比赛之一,因为我希望它并行运行。

但问题是它也会返回Brittany Tamsen always。所以它看起来不像是并行运行的。

我在这里错过了什么吗?


除了波西米亚人的回答之外,重要的是要补充一点,是的,findFirst()将返回与谓词匹配的第一个元素,无论流是否并行,因为在这种情况下流具有遇到顺序(从列表创建)。

findAny()相反,可以自由地返回与谓词匹配的任何元素(因此,如果您并不真正关心返回哪个匹配元素,则应该首选它,因为在并行流的情况下它可能允许更快地返回)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 8中的parallelStream()保证顺序吗? 的相关文章

随机推荐