6.9 练习
- 例6-10中的代码顺序求流中元素的平方和,将其改为并行处理。
例6-10 顺序求列表中数字的平方和
public static int sequentialSumOfSquares(IntStream range) {return range.map(x -> x * x).sum();}
- 例6-11中的代码把列表中的数字相乘,然后再将所得结果乘以5。顺序执行这段程序没有问题,但并行执行时有一个缺陷,使用流并行化执行该段代码,并修复缺陷。
例6-11 把列表中的数字相乘,然后再将所得结果乘以5,该实现有一个缺陷
public static int multiplyThrough(List<Integer> linkedListOfNumbers) {return linkedListOfNumbers.stream().reduce(5, (acc, x) -> x * acc);}
- 例6-12中的代码计算列表中数字的平方和。尝试改进代码性能,但不得牺牲代码质量。只需要一些简单的改动即可。
例6-12 求列表元素的平方和,该实现方式性能不高
public int slowSumOfSquares() {return linkedListOfNumbers.parallelStream().map(x -> x * x).reduce(0, (acc, x) -> acc + x);}
确保将基准代码运行多次,GitHub上提供的示例代码有一份基准数据可供使用。
