博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 8 并行流 - 1
阅读量:6272 次
发布时间:2019-06-22

本文共 1059 字,大约阅读时间需要 3 分钟。

hot3.png

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

//顺序流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 实战》                                                                                   

 

 

转载于:https://my.oschina.net/u/2552286/blog/1861729

你可能感兴趣的文章
电脑如何连接远程服务器?听语音
查看>>
使用Xcode 查看objective-C的汇编代码
查看>>
Vue.js——60分钟快速入门
查看>>
设计模式 - 模板方法模式(template method pattern) 具体解释
查看>>
mysql判断一个字符串是否包含某子串 【转】
查看>>
a bad dream
查看>>
FD_CLOEXEC用法及原因_转
查看>>
element UI 的学习一,路由跳转
查看>>
RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
查看>>
Spring JavaBean属性值的注入方式( 属性注入, 特殊字符注入 <![CDATA[ 带有特殊字符的值 ]]> , 构造器注入 )...
查看>>
【Linux】Linux下统计当前文件夹下的文件个数、目录个数
查看>>
Hibernate_14_数据连接池的使用
查看>>
Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)
查看>>
jacky自问自答-java并发编程
查看>>
Struts2+JSON数据
查看>>
zTree实现单独选中根节点中第一个节点
查看>>
Cocos2D-x设计模式发掘之中的一个:单例模式
查看>>
很强大的HTML+CSS+JS面试题(附带答案)
查看>>
用树莓派实现RGB LED的颜色控制——C语言版本号
查看>>
VC2012编译CEF3-转
查看>>