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(被不同的线程执行)出 ...
随机推荐
- 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Start(),然后才能执行添加到 SqlDependency 实例中的命令
如标题错误,解决办法及出现错误情况,见图片 出现如图错误
- February 2 2017 Week 5 Thursday
Only do what your heart tells you. 随心而行. My heart tells me that I should leave here and go back to X ...
- SAP CRM系统订单模型的设计与实现
SAP成都研究院的一个部门领导让我给他的团队做一个SAP CRM One Order框架的培训,这是我准备的培训内容. 在Jerry之前的文章 基于SAP Kyma的订单编排增强介绍,我表达了自己对S ...
- MongoDB索引管理
一.创建索引 创建索引使用db.collectionName.ensureIndex(...)方法进行创建: 语法: >db.COLLECTION_NAME.ensureIndex({KEY:1 ...
- 解析纯真IP地址库
一周以来,一直在做 IP地址库的解析.从调研到编码到优化,大概花了有七八天的时间.感觉很好玩.总结一下整个做的过程. 1.关于IP 地址库的解析方式 目前主要的解析方式有两种:通过API,或通过IP数 ...
- HDU 4676 Sum Of Gcd 【莫队 + 欧拉】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=4676 Sum Of Gcd Time Limit: 10000/5000 MS (Java/Others ...
- 10.spring:常用的数据库代码.....(不长使用了解即可)
测试代码: ApplicationContext ctx = new ClassPathXmlApplicationContext("JDBC.xml"); DataSource ...
- tensorflow训练代码
from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf mnist = input_dat ...
- es6之数组方法
//兼容插件 babel-polyfill values()等存在兼容问题,需要加载babel-polyfill插件 .keys() 获取数组的key值 .values() 获取数组的value值 ...
- MyBatis动态sql语句归纳
1.删除数据(假删除)并修改时间 <!--根据id删除学生信息(多条)--> <update id="updateStuStatus" parameterType ...