Lambda表达式写的List foreach循环是单线程处理还是多线程处理?

自从有了jdk8,我的foreach循环从原来的

for(String s:list){

System.out.println(s);

}

潇洒的变成了

list.stream.foreach((s) ->

{

System.out.println(s);

});

或者更风流的

list.forEach(System.out::println);

那么问题来了,java8是可以支持并行循环的,也就是说在循环体内多线程执行。

经笔者测试,平常使用

list.foreach(() ->{

});

list.stream.foreach(() ->{

});时是单线程的,这么写:

list.parallelStream().forEach((s) ->{
        System.out.println("lambda表达式的线程;;;"+Thread.currentThread().getId());
});

时候,才会是多线程并行处理的哦。

不信你看:

Lambda表达式写的List foreach循环是单线程处理还是多线程处理?_第1张图片

你可能感兴趣的:(java8特性)