java8新特性 - foreach多线程parallelStream
之前遍历多线程实现都是用Async+Future实现,如果不需要异步,觉得用parallelStream更方便。
目录
java8新特性 - foreach多线程parallelStream
一、测试代码
package com.cnzz.mytest.test;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
/**
* ************************************************************
* Copyright © 2020 cnzz Inc.All rights reserved. * **
* ************************************************************
*
* @program: demo
* @description: foreEach线程测试
* @author: cnzz
* @create: 2020-11-16 17:01
**/
@Slf4j
public class ForeachTest {
@Test
public void test() {
List<Integer> list=new ArrayList<>();
for (int i = 0; i <10 ; i++) {
list.add(i);
}
//单线程执行
list.forEach(num->{
log.info("单线程{}",num);
});
//多线程执行
list.parallelStream().forEach(num->{
log.info("多线程{}",num);
});
log.info("完成");
}
}
二、测试结果
这里虽然只给了10个并发,但实际增加并发量是一样的效果的。
三、深入理解-共享线程吃问题(待定)
可以参考:
https://blog.csdn.net/boy_jiaojian/article/details/106763620
https://blog.csdn.net/xiakexiaohu/article/details/86620959
总结:
1、 在遍历需要使用多线程且同步的场景下,用foreach的parallelStream实现很方便。
2、注意:是同步,不是异步。