Stream的顺序流与并行流
/**
* @auther hhh
* @date 2019/1/2 22:52
* @description
*/
public class StreamAPI2 {
/**
* 流的特性:支持并行流与顺序流
* 并行流:多个线程同时运行
* 顺序流:使用主线程,单线程
*/
public static void main(String[] args) {
Optional<Integer> optionalInteger = Stream.iterate(1, x -> x+1).limit(200).peek(x->{
System.out.println(Thread.currentThread().getName());
}
).max(Integer::compareTo);//输出 main main Optional[200],始终使用的是主线程,说明流默认是顺序流,使用的是主线程
System.out.println(optionalInteger);
Optional<Integer> optional = Stream.iterate(1, x -> x+1).limit(200).peek(x->{
System.out.println(Thread.currentThread().getName());
}
).parallel().max(Integer::compareTo);//加上 .parallel()可以将其修改成并行流,内部以多线程并行执行任务的方式执行
//输出:说明有多个线程在并行执行
//ForkJoinPool.commonPool-worker-2
//ForkJoinPool.commonPool-worker-3
//Optional[200]
System.out.println(optional); //将并行流变成顺序流 加上.sequential()
Optional<Integer> optional1 = Stream.iterate(1, x -> x+1).limit(200).peek(x->{
System.out.println(Thread.currentThread().getName());
}
).parallel().sequential().max(Integer::compareTo);
//设置lambda表达式并行的线程数量,使用parallelism
//设置启动变量:加上这个参数设置 java.util.concurrent.ForkJoinPool.common.parallelism
//设置为5个线程数量
System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism","5");
}
}
Stream的顺序流与并行流的更多相关文章
- Stream01 定义、迭代、操作、惰性求值、创建流、并行流、收集器、stream运行机制
1 Stream Stream 是 Java 8 提供的一系列对可迭代元素处理的优化方案,使用 Stream 可以大大减少代码量,提高代码的可读性并且使代码更易并行. 2 迭代 2.1 需求 随机创建 ...
- list.stream().parallel() 并行流
https://blog.csdn.net/u011001723/article/details/52794455/ : parallel()其实就是一个并行执行的流.它通过默认的ForkJoin ...
- 流API--使用并行流
这篇博客一起来研究下使用并行流.借组多核处理器并行执行代码可以显著提高性能,但是并行编程可能十分复杂且容易出错,流API提供的好处之一是能够轻松可靠的并行执行一些操作.请求并行处理流,首先要获得一个并 ...
- Java8的新特性--并行流与串行流
目录 写在前面 Fork/Join框架 Fork/Join框架与传统线程池的区别 传统的线程池 Fork/Join框架 Fork/Join框架的使用 Java8中的并行流 写在前面 我们都知道,在开发 ...
- ForkJoin、并行流计算、串行流计算对比
ForkJoin 什么是 ForkJoin ForkJoin 是一个把大任务拆分为多个小任务来分别计算的并行计算框架 ForkJoin 特点:工作窃取 这里面维护的都是双端队列,因此但其中一个线程完成 ...
- JDK8--07:并行流与串行流
JDK8中,提供了并行流和串行流,使用parallel()和sequential()来处理,parallel()为并行流sequential()为串行流,两者可以相互转换,以最后一个为准 LongSt ...
- J2SE 8的流库 --- 生成流
本文介绍了如何产生J2SE 8的流, 包括基本类型的流IntStream, LongStream, DoubleStream . 展现流的方法 public static <T> void ...
- java8新特性——并行流与顺序流
在我们开发过程中,我们都知道想要提高程序效率,我们可以启用多线程去并行处理,而java8中对数据处理也提供了它得并行方法,今天就来简单学习一下java8中得并行流与顺序流. 并行流就是把一个内容分成多 ...
- Fork/Join框架与Java8 Stream API 之并行流的速度比较
Fork/Join 框架有特定的ExecutorService和线程池构成.ExecutorService可以运行任务,并且这个任务会被分解成较小的任务,它们从线程池中被fork(被不同的线程执行)出 ...
随机推荐
- 沉淀,再出发——在Hadoop集群的基础上搭建Spark
在Hadoop集群的基础上搭建Spark 一.环境准备 在搭建Spark环境之前必须搭建Hadoop平台,尽管以前的一些博客上说在单机的环境下使用本地FS不用搭建Hadoop集群,可是在新版spark ...
- python csv写入数据,消除空行
import csv rowlist=[{'first_name': 'mark', 'last_name': 'zhao','age':21}, {'first_name': 'tony', 'la ...
- 关于Hibernate多对多关联关系的更新问题。
一个账套类Reckoning和账套项目类 AccountItem.这两个类是双向多对多关联关系. Reckoning.hbm.xml文件的配置如下 <set name="account ...
- Linux系统中while管道的
因为项目从AIX系统迁移到了RedHat系统,之前写过的一段Shell脚本不能成功运行,经过分析,锁定了关键代码如下: readFileContent(){ currentFile=$ fileSho ...
- bootstrap table 解析写死的json.并且把进度条放进列中。
function showPhaseInfo(phase){ //json字符串转json对象 var phaseInfo = eval(phase); $('#phaseTable').bootst ...
- [转]数据绑定之DataFormatString
设定BoundField的DataFormatString,通常有以下几种 DataFormatString= "{0:C}" 货币,货币的格式取决于当前Thread中Cultur ...
- POJ 1328 Radar Installation(很新颖的贪心,区间贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 106491 Accepted: 2 ...
- SPOJ SUBXOR
SPOJ SUBXOR 题意 给定一个由正整数构成的数组, 求 异或和小于k 的子序列的个数. 题解 假设答案区间为 [L, R], XOR[L, R] 等价于 XOR[1, L - 1] ^ XOR ...
- RfcDestinationManager.UnregisterDestinationConfiguration时报错cannot unregister the given destination configuration
在使用NCO访问SAP的RFC时,我的程序代码是这么写的: string destinationName = "EWM_700_GROUP"; IDestinationConfig ...
- Python 学习笔记(十一)Python语句(一)
运算符和条件语句 算术运算符 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘 ...