我想一個列表中的所有元素相乘在一起,然後通過5個使用流在Java中8這乘那結果是我的代碼:的錯誤結果使用parallelStream()時降低()
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
int mul = numbers.stream().reduce(5, (acc, x) -> x * acc);
System.out.println(mul);
這給我正確的結果,120.但是,如果我們將其更改爲parallelStream()
,那麼它會產生錯誤的值。爲什麼?爲什麼在這種情況下並行化會產生錯誤的結果?什麼是修復?
參見http://stackoverflow.com/q/28724850/2711488和http://stackoverflow.com/q/32866581/繁衍的結果2711488 – Holger