java8 Stream多线程并行数据处理
Stream多线程并行数据处理
将一个顺序执行的流转变成一个并发的流只要调用 parallel()方法
parallel()和sequential()可以调用多次。
/**
* 将当前流转为并行流
*/
S parallel();
/**
* 将当前流转为顺序流
*/
S sequential();
并行流
//.parallelStream()
List<Integer> integerList= new ArrayList<>();
List<String> stringList= Collections.synchronizedList(new ArrayList<>());
int sec = 999999;
for(int i = 0; i<sec; i++) {
integerList.add(new Random().nextInt(sec));
}
// 并行流将integerList转成stringList
integerList.parallelStream().forEach(i -> stringList.add(i.toString()));
并行流有线程安全问题,因此流中有线程不安全的集合(new ArrayList<>())进行添加/删除操作时要加Collections.synchronizedList(target)修饰。
作者:海里鲸随浪而起
来源链接:https://blog.csdn.net/weixin_40043897/article/details/84137538
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。