如文档中所述,并行流允许我们并行执行管道。现在,请考虑以下简单示例:
List<Integer> lst;
//initialiaziation of lst
lst.parallelStream().mapToInt(Integer::intValue).max();
那么,这是否意味着管道并行执行?如果是这样,有多少线程将执行管道?我们只是创建一个并行流就是一种奇迹,就是这样......流框架将决定要创建多少线程来执行。
答案 0 :(得分:1)
来自 OCP:Oracle认证专家Java SE 8程序员||学习指南:考试1z0-809
[...]取决于您环境中可用的CPU数量 以下是使用并行流的代码的可能输出 [...]更好的是,结果与处理器数量成比例。 缩放是我们添加更多资源(如CPU)时的属性 结果逐渐改善。 [...]
要对其进行测试,您可能需要使用peek
并打印Thread.currentThread()
int i = list.parallelStream()
.peek(x -> System.out.println(Thread.currentThread()))
.mapToInt(Integer::intValue)
.max().getAsInt();
对我来说,使用4个处理器,我就可以完成四个线程。