Параллельный поток с методом сбора()JAVA

Программисты JAVA общаются здесь
Anonymous
Параллельный поток с методом сбора()

Сообщение Anonymous »

Я пытаюсь понять, почему происходит другое, когда я меняю с y.addAll(x) на x.addAll(y) в фрагменте кода ниже:

Код: Выделить всё

List result = List.of(1, 2)
.parallelStream()
.collect(
ArrayList::new,
(x, y) -> x.add(y),
(x, y) -> y.addAll(x)
);
System.out.println(result);
Я знаю, что когда я использую ParallelStream(), одновременно выполняется более одного потока.
collect() имеет три параметра; первые два параметра я понимаю. Что касается третьего параметра, я знаю, что x, y — это подпотоки и ArrayLists, но я не понимаю, почему результаты в каждом случае разные. Я ожидал, что они будут одинаковыми.
  • (x, y) -> y.addAll(x) // вывод: [1]< /p>
  • (x, y) -> x.addAll(y) // вывод: [1, 2]


Подробнее здесь: https://stackoverflow.com/questions/788 ... ect-method

Вернуться в «JAVA»