Java并行流问题之parallelStream的使用方式

简介: Java并行流问题之parallelStream的使用方式

最近在同事的代码里,发现了->的代码,觉得有点惊讶和疑惑,虽然知道->{}是匿名函数的表达式,但却被parallelStream所吸引。

就像这样的代码:

复制代码
List specialModelNeedToBeSaved = bom.parallelStream()
.filter(a->CodeStartWithList.getStartWithListOfModel().contains(a.getScpe().substring(0,2)))
.filter(b->"(".equals(b.getScpe().substring(3,4))||"(".equals(b.getScpe().substring(3,4)))
.collect(Collectors.toList());
//代码效果参考:http://www.zidongmutanji.com/zsjx/323075.html

看着挺长挺nb的,百度了才知道parallelStream是一个叫并行流的东西,Java1.8才加入的。它通过默认的ForkJoinPool,提高多线程任务的速度,默认线程数量等于运行计算机上的处理器数量。Java8为ForkJoinPool添加了一个通用线程池,这个线程池用来处理那些没有被显式提交到任何线程池的任务。当调用Arrays类上添加的新方法时,自动并行化就会发生。

注意哦,这里是并行,不是并发。因为是多个处理器同时处理,和并发还是有区别的。

我们可以用parallelStream来处理list里的元素,比如输出:

复制代码
TestTwo testTwo = new TestTwo();
List list = new ArrayList<>();
for(int i=1;i<100;i++) list.add(i); list.parallelStream().forEach(a->{
out.println(a);
});
//代码效果参考:http://www.zidongmutanji.com/bxxx/341800.html

 这样输出是无序,当然我们也可以让它有序的!forEachOrdered就是按照list的顺序依次执行。

list.parallelStream().forEachOrdered(a->{
out.println(a);
});
 我们也可以通过fiter来过滤list里的值,需要注意的是后面的匿名函数需要有true,false返回值,以此才能知道,哪些元素是需要被过滤的。

复制代码
List p2 = list.parallelStream().filter(a->{
if(a>95){
return true;
}else{
return false;
}
}).collect(Collectors.toList());
p2.parallelStream().forEachOrdered(a->{
out.println(a);
});

相关文章
|
2月前
|
算法 Java 数据处理
Dating Java8系列之并行数据处理
Dating Java8系列之并行数据处理
41 0
|
3天前
|
并行计算 Java 大数据
Java中的高效并行计算与多线程编程技术
Java中的高效并行计算与多线程编程技术
|
19天前
|
Java 程序员
Java多线程编程是指在一个进程中创建并运行多个线程,每个线程执行不同的任务,并行地工作,以达到提高效率的目的
【6月更文挑战第18天】Java多线程提升效率,通过synchronized关键字、Lock接口和原子变量实现同步互斥。synchronized控制共享资源访问,基于对象内置锁。Lock接口提供更灵活的锁管理,需手动解锁。原子变量类(如AtomicInteger)支持无锁的原子操作,减少性能影响。
25 3
|
2天前
|
Java 调度 Windows
Java面试之程序、进程、线程、管程和并发、并行的概念
Java面试之程序、进程、线程、管程和并发、并行的概念
8 0
|
2天前
|
并行计算 监控 Java
Java中的并行计算与任务分发策略
Java中的并行计算与任务分发策略
|
2天前
|
安全 Java 测试技术
Java中的并行流详解
Java中的并行流详解
|
2天前
|
消息中间件 分布式计算 并行计算
Java中的并行计算与分布式系统设计
Java中的并行计算与分布式系统设计
|
4天前
|
安全 Java 测试技术
Java中的并行流详解
Java中的并行流详解
|
6天前
|
并行计算 Java 大数据
Java中的高效并行计算与多线程编程技术
Java中的高效并行计算与多线程编程技术
|
25天前
|
并行计算 算法 Java
Java8实战-并行数据处理与性能(二)
Java8实战-并行数据处理与性能(二)
59 0