文档章节

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
博文 304
码字总数 130936
作品 0
福州
私信 提问
Java 8新特性探究(三)解开lambda最强作用的神秘面纱

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

OSC闲人
2013/11/18
0
42
Java 8 最终发布日期敲定,有 bug 也要发布

Oracle 公司计划于 2014 年 3 月 18 日发布 Java 8,这一日期已经敲定,即使届时该版本中仍存在一些小的 bug(“非致命”bug),也要按计划发布。 这一消息来自 Oracle 公司的 Java 8 版本发...

oschina
2014/01/16
5.5K
39
第一章 为什么要关心java8

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

一个yuanbeth
09/25
0
0
为什么用 Java—— 一个 Python 程序员告诉你

来源:董老师在硅谷 这篇文章专门给程序员写的,普通读者慎入。原作者:Kevin Sookocheff 译者:Celia Zhen,原文点击文末链接。 每当我告诉别人我一直在用Java工作时,大家的反应都是: “纳...

oschina
2016/03/19
59.2K
84
Java 8新增特性优缺点

Java 8于今年三月份正式发布了。那么它是否如我们之前所期待的那样呢?下面我们就一一查看Java8新增特性的优缺点吧。 Java 8试图“创新”,根据 微软对这个词的定义,就是把其他框架或语言里...

Emilypz
2015/09/25
662
1

没有更多内容

加载失败,请刷新页面

加载更多

初探Spring Cloud(一)

1. 什么是Spring Cloud? Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,...

__HuWei
19分钟前
0
0
Mac配置ssh免密钥登录

Mac终端每次使用ssh -p 22 user@ip登录很是麻烦,下面介绍配置ssh免密钥登录: cd ~/.ssh下创建conf文件,写入以下配置: Host test HostName ip Port 22 IdentityFile /Users/t/key/test.p...

littlemesieV
34分钟前
1
0
Spark2.0操作ES

ES提供了支持包来方便的操作ES。首先添加ES的依赖maven: <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-spark-20_2.11</artifactId> <version>6.2.0</ver......

守望者之父
36分钟前
1
0
专业术语

1、防御性编程 DruidDataSource类有一个init方法,我们在spring中配置druid时,都会指定 init-method='init'. 而且DruidDataSource也在其他地方,诸如getConnection()方法里作了防御性编程, 也就...

still5656
38分钟前
1
0
微信开发--测试账号相关

1、微信公众平台选择代码开发后,其平台上的部分功能会不可用 可在开发者工具中选择开通测试账号,进行相关的功能调试(测试账号出微信支付不可调试外,其他功能基本上都可以调试) 2、测试账号...

Code辉
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部