这是我运行的代码,当不是叠加或者叠乘的时候
public class Test10 {
public static void main(String[] args) throws InterruptedException {
LongAccumulator accumulator = new LongAccumulator((x, y) -> {
long s = x + x * y;
System.out.println(x + "+" + x + "*" + y + "=" + s);
return s;
}, 1);
ExecutorService executor = Executors.newFixedThreadPool(8);
IntStream.range(1, 10).forEach(i -> executor.submit(() -> accumulator.accumulate(i)));
executor.shutdown();
Thread.sleep(2000);
System.out.println(accumulator.getThenReset());
}
}
此时的运行结果:
但是当我把表达式写成一行,就可以运行出固定结果
public class Test10 {
public static void main(String[] args) throws InterruptedException {
LongAccumulator accumulator = new LongAccumulator((x, y) -> {
return x + x * y;
}, 1);
ExecutorService executor = Executors.newFixedThreadPool(8);
IntStream.range(1, 10).forEach(i -> executor.submit(() -> accumulator.accumulate(i)));
executor.shutdown();
Thread.sleep(1000);
System.out.println(accumulator.getThenReset());
}
}
所以在方法只写一行运行语句的时候,是会顺序运行吗?