文档章节

java 8 并行流 - 1

C
 Canaan_
发布于 07/24 00:02
字数 426
阅读 1
收藏 0

下面创建一个并行流,与顺序流

//顺序流
Stream.iterate(0L, i -> i + 1)
        .limit(Integer.MAX_VALUE)
        .reduce(0L, Long::sum);

//并行流
Stream.iterate(0L, i -> i + 1)
        .limit(Integer.MAX_VALUE)
        .parallel()     //转为并行流
        .reduce(0L, Long::sum);

 

请注意 ,在实现中,对顺序流调用 parallel方法 并不意味着流本身有任何实际的变化 。它在内部实际上就是设了一个boolean标志,表示你想让调用 parallel之后进行的所有操作都并行执行。

请注意 ,不能将两个方法结合起来,以为可惜更细化地控制在遍历流时哪些操作要并行,哪些操作要顺序执行。例:

  Stream.iterate(0L, i -> i + 1)
                .limit(Integer.MAX_VALUE)
                .sequential()   //转顺序流
                .map(...)
                .parallel()     //转为并行流
                .reduce(0L, Long::sum);

但最后一次parallel或sequential调用会影响整个流水线。在上面,流水线会并行执行,因为最后调用 的是它。

 

    1 .并行 流内部使用了默认的ForkJoinPool,它默认的纯种数量就是你的处理器数量,这个值是由  Runtime.getRuntime().availableProcessors() 得到的。

    2. 可以 通过系统属性 来改变线程池的大小,如:

 System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism","12");

这是一个全局设置,因此它将影响代码中所有的并行 流。反过来说,目前还无法专为某个并行流指定这一个值。一般而言,让ForkJoinPool的大小等于处理器数量是个不错的默认值,除非你有很好的理由,否则我们强烈建议你不要修改它。

 

 

 

----摘自《java 8 实战》                                                                                   

 

 

© 著作权归作者所有

共有 人打赏支持
C
粉丝 16
博文 257
码字总数 109262
作品 0
福州
Java 8新特性探究(三)解开lambda最强作用的神秘面纱

我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值。现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析...

OSC闲人
2013/11/18
0
42
stream in java8

如果使用过scala,使用scala函数编程思想处理数据,那酸爽谁用谁知道。使用java老觉得不得劲,但java8借用了scala的思想,引入了函数编程思想,那就是stream,随后我们慢慢体验她的妙处。 Ja...

jacksu在简书
01/30
0
0
【java8】java新特性(二)——lambda表达式

一,前言 在上一篇博客中,小编向大家抛转引玉,简单说明了[ Java8 ](http://blog.csdn.net/kisscatforever/article/details/79572194 ),其实Java 8在2014年3月18日,就发布了。可以说程序...

kisscatforever
03/20
0
0
Java并发的四种风味:Thread、Executor、ForkJoin和Actor

这篇文章讨论了Java应用中并行处理的多种方法。从自己管理Java线程,到各种更好几的解决方法,Executor服务、ForkJoin 框架以及计算中的Actor模型。 Java并发编程的4种风格:Threads,Execu...

恶魔永生
2015/01/14
0
0
流,用声明性的方式处理数据集 - 读《Java 8实战》

引入流 Stream API的代码 声明性 更简洁,更易读 可复合 更灵活 可并行 性能更好 流是什么? 它允许以声明方式处理数据集合 遍历数据集的高级迭代器 透明地并行处理 简短定义:从支持数据处理...

yysue
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Zookeeper总结

Zookeeper的部分概念 什么是zookeeeper? Zookeeper是一个分布式服务的协调中心 zookeeper节点的角色类型? Leader(领导者)、Follower(跟随者)、Observer(观察者) Leader 负责更新系统...

DemonsI
7分钟前
0
0
Redis学习笔记

常用命令 从Docker进入Redis的命令 sudo docker exec -it redis /bin/bash

OSC_fly
8分钟前
0
0
SqlServer查询某个日期的数据

select * from View_ZJMONITORINGCORROSION where ENTERDATE > CONVERT(datetime,DATEADD(day,1,'2017/12/28 14:53:07'))...

笑丶笑
9分钟前
0
0
常用编码规范

Standard characters https://ascii.cl/

yeahlife
11分钟前
0
0
flannel实战

docker swarm mode的出现是个里程碑,官方原生的编排调度看起来都成雏形了,但是swarm mode和容器外部系统的对接、网络性能始终不尽人意,swarm mode下各种开源周边不能使用,感觉swarm mod...

China_OS
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部