parallel循环java_Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试...
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 循环耗时测试...相关推荐
- java stream foreach_Java 8 Lambda Stream forEach具有多个语句
我仍在学习Lambda,请原谅我做错了什么 final Long tempId = 12345L; List updatedEntries = new LinkedList<>(); fo ...
- java中break内外循环_java 中break如何跳出外部循环
学习就是为了不断的看到自己的知识盲点,然后改正,以前知道如何使用break来跳出循环,突然学习到可以用break跳出外部的循环(以前只知道怎么调本次的循环). 上正题代码如下: break跳出本次循环 ...
- Java中的do-while循环——通过示例学习Java编程(11)
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=22&cid=0 在上一篇教程中,我们讨论了w ...
- Python中For循环与While 循环的使用
Python中For循环与While 循环的使用 For循环在枚举中使用: Continue和Break在For循环中的使用: 举例: For 循环与While 循环区别: break语句在While ...
- 为什么不应该用Stream forEach替换for循环的3个原因
太棒了! 我们正在将代码库迁移到Java8.我们将用函数替换所有内容. 扔掉设计模式. 删除面向对象. 对! 我们走吧! 等一下 Java 8已经问世了一年多,而这种兴奋又回到了日常业务中. bael ...
- java lambda map循环停止_Map 使用 Lambda 的 forEach 实现跳出循环操作
lambda 的 foreach表达式用起来很爽啊,最近开发中用来遍历了一下map,结果就翻车了......大致场景如下: 本来是要在找到包含了"3"的值之后终止循环的,结果bre ...
- java8 循环map_Java8遍历Map的三种方式——for/stream/forEach
最近写在基于Spring WebFlux项目遇到一个需求,希望将请求中的cookie/headers/params等信息获取,而获取后的数据结构都是MultiValueMap的数据结构,实质上可以看做 ...
- Lambda Stream
Lambda Lambda 表达式的本质: 函数式接口的实例: 函数式接口:@FunctionalInterface 标识的接口,只有一个抽象方法: 核心函数式接口 接口名称 抽象方法 Consume ...
- Java Lambda表达式forEach无法跳出循环的解决思路
Java Lambda表达式forEach无法跳出循环的解决思路 如果你使用过forEach方法来遍历集合,你会发现在lambda表达式中的return并不会终止循环,这是由于lambda的底层实现导 ...
最新文章
- Jsoncpp 使用方法解析
- 脑电分析系列[MNE-Python-12]| 注释连续数据
- 03 在百度地图上定位到指定位置
- Charles 某音最新版本抓包环境搭建
- struts.xml配置文件结构
- 第四讲 Python3中的int型和浮点型
- javscript 实现iframe加载内容页出现LOADING效果
- 前端学习(1132):正则表达式学习目标
- 给即将35岁的产品经理提个醒
- 读书节来当当薅羊毛!170买400/240买600
- 删除Windows网络连接方法
- Character controller
- at/atq/atrm
- 新书出版:《数字滤波器的MATLAB与FPGA实现——Altera/Verilog版(第2版)》已开始印刷出版
- QueryDSL 自定义返回结果集类型
- 基于summernote的富文本编辑器,粘贴时去除word格式
- 阿里年薪50WJAVA工程师转大数据学习路线!
- Ax=0的非零解/马尔可夫链的平稳分布
- MATLAB算法实战应用案例精讲-【人工智能】Grover量子搜索算法
- [自考总结]想要去的远方,终有一天会到达
热门文章
- 机器学习模型建立的几点建议
- 关于FATFS文件系统挂载多个磁盘
- Android FM模块学习之一 FM启动流程
- 让自己的程序支持livewriter
- VS2010数据库项目不能正常工作解决方案
- matlab m 文件例子,一个简单OFDM例子(matlab m文件)
- java iterator对象_JAVA Iterator 详解 代码
- 无锡初一计算机试题,2015年无锡市初中信息技术考查选择题.doc
- python能够处理的最大整数是多少_python中能输出的最大整数位是多少
- db2dual_DB2常用SQL的写法(持续更新中...)