Java 8 里面的stream 有串行流和并行流之分。

说高级的stream就是那个并行流。下面是那个并行流的简单实现。只要是继承Collection类的都可以这么用。

list.stream().parallel()

list.parallelStream()

先看代码和运行结果,再解释一下,这个并行串行流之间的差别。

package com.lxk.lambdaTest;

import com.google.common.collect.Lists;

import java.util.List;

/**

* 测试性能(Java 8 的循环和Java 7 的循环耗时的对比测试)

*

* Created by lxk on 2017/8/31

*/

public class Performance {

public static void main(String[] args) {

List list = getLoopList();

normalBeforeLoop(list);

normalAfterLoop(list);

notNormalAfterLoop(list);

}

private static void notNormalAfterLoop(List list) {

long a = System.currentTimeMillis();

list.stream().parallel().forEach(System.out::print);

System.out.println(" list.stream().parallel().forEach 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");

}

private static void normalAfterLoop(List list) {

long a = System.currentTimeMillis();

list.stream().forEach(System.out::print);

System.out.println(" list.stream().forEach 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");

a = System.currentTimeMillis();

list.forEach(System.out::print);

System.out.println(" list.forEach 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");

}

private static void normalBeforeLoop(List list) {

long a = System.currentTimeMillis();

for (String s : list) {

System.out.print(s);

}

System.out.println(" for each 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");

}

private static List getLoopList() {

List list = Lists.newArrayList();

for (int i = 0; i < 10000; i++) {

list.add("item " + i);

}

return list;

}

}

下面是代码运行结果:

好,关于,那个并行和串行的流的差别,可以看到啦。

并行的流,在循环的时候,就不是 1 - 9999 挨着输出。而是,看多核的心情。

parallel循环java_Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试...相关推荐

  1. java stream foreach_Java 8 Lambda Stream forEach具有多个语句

    我仍在学习Lambda,请原谅我做错了什么 final Long tempId = 12345L; List updatedEntries = new LinkedList<>(); fo ...

  2. java中break内外循环_java 中break如何跳出外部循环

    学习就是为了不断的看到自己的知识盲点,然后改正,以前知道如何使用break来跳出循环,突然学习到可以用break跳出外部的循环(以前只知道怎么调本次的循环). 上正题代码如下: break跳出本次循环 ...

  3. Java中的do-while循环——通过示例学习Java编程(11)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=22&cid=0 在上一篇教程中,我们讨论了w ...

  4. Python中For循环与While 循环的使用

    Python中For循环与While 循环的使用 For循环在枚举中使用: Continue和Break在For循环中的使用: 举例: For 循环与While 循环区别: break语句在While ...

  5. 为什么不应该用Stream forEach替换for循环的3个原因

    太棒了! 我们正在将代码库迁移到Java8.我们将用函数替换所有内容. 扔掉设计模式. 删除面向对象. 对! 我们走吧! 等一下 Java 8已经问世了一年多,而这种兴奋又回到了日常业务中. bael ...

  6. java lambda map循环停止_Map 使用 Lambda 的 forEach 实现跳出循环操作

    lambda 的 foreach表达式用起来很爽啊,最近开发中用来遍历了一下map,结果就翻车了......大致场景如下: 本来是要在找到包含了"3"的值之后终止循环的,结果bre ...

  7. java8 循环map_Java8遍历Map的三种方式——for/stream/forEach

    最近写在基于Spring WebFlux项目遇到一个需求,希望将请求中的cookie/headers/params等信息获取,而获取后的数据结构都是MultiValueMap的数据结构,实质上可以看做 ...

  8. Lambda Stream

    Lambda Lambda 表达式的本质: 函数式接口的实例: 函数式接口:@FunctionalInterface 标识的接口,只有一个抽象方法: 核心函数式接口 接口名称 抽象方法 Consume ...

  9. Java Lambda表达式forEach无法跳出循环的解决思路

    Java Lambda表达式forEach无法跳出循环的解决思路 如果你使用过forEach方法来遍历集合,你会发现在lambda表达式中的return并不会终止循环,这是由于lambda的底层实现导 ...

最新文章

  1. Jsoncpp 使用方法解析
  2. 脑电分析系列[MNE-Python-12]| 注释连续数据
  3. 03 在百度地图上定位到指定位置
  4. Charles 某音最新版本抓包环境搭建
  5. struts.xml配置文件结构
  6. 第四讲 Python3中的int型和浮点型
  7. javscript 实现iframe加载内容页出现LOADING效果
  8. 前端学习(1132):正则表达式学习目标
  9. 给即将35岁的产品经理提个醒
  10. 读书节来当当薅羊毛!170买400/240买600
  11. 删除Windows网络连接方法
  12. Character controller
  13. at/atq/atrm
  14. 新书出版:《数字滤波器的MATLAB与FPGA实现——Altera/Verilog版(第2版)》已开始印刷出版
  15. QueryDSL 自定义返回结果集类型
  16. 基于summernote的富文本编辑器,粘贴时去除word格式
  17. 阿里年薪50WJAVA工程师转大数据学习路线!
  18. Ax=0的非零解/马尔可夫链的平稳分布
  19. MATLAB算法实战应用案例精讲-【人工智能】Grover量子搜索算法
  20. [自考总结]想要去的远方,终有一天会到达

热门文章

  1. 机器学习模型建立的几点建议
  2. 关于FATFS文件系统挂载多个磁盘
  3. Android FM模块学习之一 FM启动流程
  4. 让自己的程序支持livewriter
  5. VS2010数据库项目不能正常工作解决方案
  6. matlab m 文件例子,一个简单OFDM例子(matlab m文件)
  7. java iterator对象_JAVA Iterator 详解 代码
  8. 无锡初一计算机试题,2015年无锡市初中信息技术考查选择题.doc
  9. python能够处理的最大整数是多少_python中能输出的最大整数位是多少
  10. db2dual_DB2常用SQL的写法(持续更新中...)