Параллельное сокращение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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