Parallel sorting in java8 returns invalid result

When I apply parallel sorting using threads in Java 8, I get an invalid result:

List<String> list = new ArrayList<>();
list.add("A");
list.add("C");
list.add("B");

list.stream().sorted().forEach(System.out::println);

System.out.println("-");

list.stream().parallel().sorted().forEach(System.out::println);

Results:

A
B
C
-
B  <----- Invalid order
C
A

Why does parallel sorting return unsorted results?

+4
source share
1 answer

forEach() does not guarantee the processing of elements in a certain order:

. , parallelism. , . , .

forEachOrdered():

list.stream().parallel().sorted(Comparator.comparing(e -> e.getFirstName()))
    .forEachOrdered(System.out::println);
+8

Source: https://habr.com/ru/post/1537362/


All Articles