文档章节

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
粉丝 17
博文 296
码字总数 128442
作品 0
福州
Java 8新特性探究(三)解开lambda最强作用的神秘面纱

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

OSC闲人
2013/11/18
0
42
Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码

美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本。 为什么说是长期版本,看下面的官方发布的支持路线图表。 可以看出 Java 8 扩展支持到 2025 年,...

Java技术栈
09/27
0
0
stream in java8

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

jacksu在简书
01/30
0
0
第一章 为什么要关心java8

一、java怎么还在变 1、java在编程语言生态系统中的位置 java虚拟机(JVM)及其字节码可能会变得比java语言本身更重要,而且对于某些应用来说,java可能会被同样运行在JVM上的竞争对手(如S...

一个yuanbeth
09/25
0
0
Java 8 lambda 表达式 示例

Java8中的Lambda表达式取代了匿名类,取消了模板,允许用函数式风格编写代码。这样有时可读性更好,表达更清晰。作为开发人员,我发现学习和掌握lambda表达式的最佳方法就是勇于尝试,尽可能...

阿刚ABC
10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

idea 通过jpa自动生成实体类

引入jpa包 打开persistence窗口 右键选择连接数据库 如果数据库没配置,则可以在下图选项中配置 选择好数据库和实体类的生成地址

斩神魂
30分钟前
1
0
tcpdump 命令

TCPDUMP简介 tcpdump 是一个很常用的网络包分析工具,可以用来显示通过网络传输到本系统的 TCP/IP 以及其他网络的数据包。tcpdump 使用 libpcap 库来抓取网络报,这个库在几乎在所有的 Linu...

寰宇01
37分钟前
2
0
软件的Alpha、Beta、RC、GA版本的区别

Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。 Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。 RC:(Release Candidate) 顾名思义...

乔老哥
38分钟前
2
0
慢雾安全海贼王:从DApp亡灵军团,细说区块链安全

本文转载自微信公号“万向区块链”,为慢雾安全负责人海贼王在万向区块链实验室举办的2018上海区块链国际周-技术开放日上的演讲速记整理。 这张图总结了智能合约攻防的各个方面,分为两大部分...

万向区块链
44分钟前
13
0
Matlab编程之——卷积神经网络CNN代码解析

卷积神经网络CNN代码解析 deepLearnToolbox-master是一个深度学习matlab包,里面含有很多机器学习算法,如卷积神经网络CNN,深度信念网络DBN,自动编码AutoE ncoder(堆栈SAE,卷积CAE)的作...

酒逢知己千杯少
44分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部