并行流与串行流

  • 1、概述
  • 2、实例

1、概述

并行流就是把一个内容分成多个数据块,并用不同的线程分 别处理每个数据块的流。
Java 8 中将并行进行了优化,我们可以很容易的对数据进行并 行操作。Stream API 可以声明性地通过 parallel() 与 sequential() 在并行流与顺序流之间进行切换。

2、实例

若我们需要计算从0到1000000000L的累计和,若是普通的从0加到1000000000L,势必对cpu的利用率不高,我们做个测试
1、普通的累加和:

long start = System.currentTimeMillis();long sum = 0L;for (long i = 0L; i <= 1000000000L; i++) {sum += i;}System.out.println(sum);long end = System.currentTimeMillis();System.out.println("耗费的时间为: " + (end - start));


2、采用并行流计算

long start = System.currentTimeMillis();Long sum1 = LongStream.rangeClosed(0L, 1000000000L).parallel().reduce(0,Long::sum);System.out.println(sum1);long end = System.currentTimeMillis();System.out.println("耗费的时间为: " + (end - start));

从结果来看,差距并不是很大,有时候并行流执行时间比普通的累计还长,是因为并行流执行的时候会递归将计算进行差分,最后再将拆分的结果合并,会消耗掉一部分时间。所以,可以增大数据量去测试,效果就会很明显。

加大数据量,计算从0到10000000000L
1、普通累加和:

2、并行流计算

可以看到,数据已经溢出了,但是我们观察消耗时间可以发现,数据量越大,并行流的优势越明显

java8新特性--并行流与串行流相关推荐

  1. java8新特性【Lambda、Stream API、Optional、Date Time API 、并行流与串行流】

    文章目录 Lambda 表达式 Lambda 表达式的基础语法 方法引用 Lambda 表达式需要"函数式接口"的支持 Java8 内置的四大核心函数式接口 Stream API ...

  2. java+串行和并行的区别_Java8新特性_并行流与串行流

    1.Java8中forkjoin框架使用更加简单了 1.7中的ForkJoin框架编码复杂且容易出错,而8中的编码则十分简单 JDK1.7时开发者需要自定义计算类,如 package com.atgu ...

  3. 锁与并发工具包与线程池与LockSupport与Fork/Join框架与并行流串行流与阻塞队列与JPS,jstack命令查看死锁查看线程状态与AQS个人笔记九

    朝闻道,夕死可矣 本文共计 86564字,估计阅读时长1小时 点击进入->Thread源码万字逐行解析 文章目录 本文共计 86564字,估计阅读时长1小时 一锁 二Java中13个原子操作类 ...

  4. Java8新特性整理篇

    文章目录 概述 Lambda表达式 函数式(Functional)接口 Stream API Optional类 概述 Java 8是oracle公司于2014年3月发布,可以看成是自Java 5 以 ...

  5. 【Java8新特性】关于Java8的Stream API,看这一篇就够了!!

    写在前面 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一个则是 Stream API(java.util.stream.*)  ,那什么是Stream API呢?Java8中 ...

  6. Java8 新特性简介

    Java8是2014年发布的,至今也已经有快三年的时间了,之前虽然有学习过,但是学的比较零散,不成系统,而且也没有覆盖到Java8所有的特性. 由于公司已经使用了JDK1.8,所以工作中能使用Java ...

  7. 放大招了,肝了一篇8万字的Java8新特性总结,赶快收藏

    大家好,我是冰河~~ 说实话,肝这篇文章花了我一个月的时间,关于Java8的新特性全在这儿了,建议先收藏后阅读. Java8有哪些新特性? 简单来说,Java8新特性如下所示: Lambda表达式 函 ...

  8. JAVA8新特性的总结

    java8的改变 Lambda 表达式 函数式接口 方法引用 / 构造器引用 Stream API 接口中的默认方法 / 静态方法 新时间日期 API 其他新特性 新特性 速度更快 代码更少 强大的 ...

  9. JDK8新特性:Lambda表达式、Stream流、日期时间工具类

    重要特性: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值. 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号. 可选的大括号:如果主体包含了一个语句,就不需要大括号. ...

最新文章

  1. 学习MongoDB(Troubleshoot Replica Sets) 集群排除故障
  2. Linux脚本获取日期,Shell脚本获取格式化日期与时间
  3. 网工路由基础(5)ISIS协议
  4. MySQL也有潜规则 – Select 语句不加 Order By 如何排序?
  5. 【科普】让人头秃的理论:什么是“奥卡姆剃刀”原理?
  6. 微软全部正版软件下载地址和序列号索取
  7. 如何在SAP CRM WebClient UI上打开外部链接
  8. JavaScript对象的创建总结
  9. 【转】itk、vtk、qt 显示dicom 数据
  10. 沟通技巧系列 - 积极和移情倾听
  11. 解决:Google代码achartengine曲线代码报错问题(转)
  12. Python+matplotlib绘制多门课程学生成绩分布饼状图
  13. Windows查看所有的端口
  14. PDF Expert 2.5.13 极致的 PDF 阅读标注工作体验
  15. eBay运营模式有哪些
  16. PUN ☀️六、机器人基础设置:运动、相机、攻击与生命值
  17. 【绝知此事要躬行】线性表之链表OJ(上)
  18. icloud验证失败连接服务器时出现问题,登录 iCloud 提示验证失败连接到服务器时出现问题怎么办及苹果iPhone手机安装两个微信教程...
  19. 语音识别_ML-KWS-for-MCU_资料整理
  20. catia中画螺杆 螺纹

热门文章

  1. 工具 网络游戏封包基础
  2. Codeforces 1428E Carrots for Rabbits 贪心
  3. Android studio 模拟器中只能输入英文 如何输入中文
  4. 河北北方学院计算机二级考试安排,2021年河北北方学院开学时间入学考试及新生转专业相关流程说明...
  5. win10开启远程桌面连接的的一波三折——无法连接到远程计算机、你的凭据不工作
  6. Objective-c 学习笔记(二)
  7. 全国超级计算机排名500强每年发布几次,全球超级计算机500强榜单发布,中国排第几?...
  8. exist优化 in mysql_MySQL 子查询优化[IN/EXISTS]--smei join
  9. 什么是jQuery?jQuery有哪些优势?
  10. TCPUDP测试工具 1.02 绿色版 - 绿色软件联盟 - 可定时发送数据