Параллельное сокращение Java IntStreamJAVA

Программисты JAVA общаются здесь
Anonymous
Параллельное сокращение Java IntStream

Сообщение Anonymous »

почему a==b ложно при параллельной работе, но при использовании с объединителем оно работает?
public class test {

public static int cal(final int i) {
return 1;
}

public static void main(String args[]) {

int a = IntStream.range(0, 3).reduce(0, (abc, cde) -> abc + cal(cde));
int b = IntStream.range(0, 3).parallel().reduce(0, (abc, cde) -> abc + cal(cde));
System.out.println(a == b); // false

int c = List.of(0, 1, 2).stream().parallel().reduce(0, (abc, cde) -> abc + cal(cde), Integer::sum);
System.out.println(a == c); // true
}
}


Подробнее здесь: https://stackoverflow.com/questions/734 ... lel-reduce

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