package com.spse.pricing.client.main;
import java.util.stream.IntStream;
public class NestedParalleStream {
int total = 0;
public static void main(String[] args) {
NestedParalleStream nestedParalleStream = new NestedParalleStream();
nestedParalleStream.test();
}
void test(){
try{
IntStream stream1 = IntStream.range(0, 2);
stream1.parallel().forEach(a ->{
IntStream stream2 = IntStream.range(0, 2);
stream2.parallel().forEach(b ->{
IntStream stream3 = IntStream.range(0, 2);
stream3.parallel().forEach(c ->{
//2 * 2 * 2 = 8;
total ++;
});
});
});
//It should display 8
System.out.println(total);
}catch(Exception e){
e.printStackTrace();
}
}
}
請幫助我們如何自定義parallestream以確保我們能夠獲得一致性結果。Java 8嵌套ParallelStream不能正常工作
它實際顯示的是什麼? – 2014-09-02 14:58:11
'它應該顯示8'好,它顯示什麼呢?您是否嘗試過使用'total' ['volatile'](http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html)? – kajacx 2014-09-02 14:58:12
@kajacx volatile不會幫助,因爲'a ++'是'a = a + 1'的快捷鍵,這不是原子的 – talex 2014-09-02 15:01:02