Я пытаюсь понять, как метод reduce()
работает точно с параллельными потоками, и я не понимаю, почему следующий код не возвращает конкатенацию этих строк.
Это код:
public class App {
public static void main(String[] args) {
String[] grades = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"};
StringBuilder concat = Arrays.stream(grades).parallel()
.reduce(new StringBuilder(),
(sb, s) -> sb.append(s),
(sb1, sb2) -> sb1.append(sb2));
System.out.println(concat);
}
}
Код работает только с последовательными потоками, но с параллельными потоками не возвращает конкатенацию.Выходной каждый раз отличается.Может кто-нибудь объяснить мне, что там происходит?