Java中StreamparallelStream,前者是单管,后者是多管,运行时间上做一个小对比,直接上代码:

/**
*
* @author zhangy6
* <p>对比Stream、parallelStream</p>
* @date 2017-07-25
*/
public class StreamTest {
public static void main(String[] args) {
String path = "pku_training.utf8";
try {
List<String> list = IOUtil.readFile2List(path, "utf-8"); long start = System.currentTimeMillis();
list.stream().
filter(e -> StringUtils.isNotBlank(e)).
map(e -> getIdiom(e)).
collect(Collectors.toList());
System.out.println("stream : " + (System.currentTimeMillis() - start) + "ms"); start = System.currentTimeMillis();
list.parallelStream().
filter(e -> StringUtils.isNotBlank(e)).
map(e -> getIdiom(e)).
collect(Collectors.toList());
System.out.println("parallelStream : " + (System.currentTimeMillis() - start) + "ms"); } catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} private static List<String> getIdiom(String string) {
String[] array = string.split("\\s+");
List<String> list = Arrays.asList(array); return list.stream().filter(e -> e.length() == 4).collect(Collectors.toList());
}
}

代码是读取一个分词训练语料,大小7.37MB,然后找出其中四个字的单词/成语,对比一下Stream和ParallelStream运行时间(笔记本win10),结果如下:

stream : 317ms
parallelStream : 90ms

多管就是比单管强很多,线程都不用了。

Java 8里 Stream和parallelStream的区别的更多相关文章

  1. Java JVM里堆和栈的区别

    参考资料: 1.堆和栈的概念和区别 2.JVM虚拟机

  2. 转 java 8 lamba stream

    一直在写中间件相关的代码,提供SDK给业务方使用,但很多业务方还一直停留在1.7版本,迟迟不升级,为了兼容性,不敢在代码中使用Java8的一些新特性,比如Stream之类的,虽然不能用,但还是要学一下 ...

  3. Java Thread 的 sleep() 和 wait() 的区别

    Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别       1. sleep ...

  4. 详解Java 8中Stream类型的“懒”加载

    在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...

  5. Java Thread 的 run() 与 start() 的区别

    Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别             1. ...

  6. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

  7. Java基础(十一) Stream I/O and Files

    Java基础(十一) Stream I/O and Files 1. 流的概念 程序的主要任务是操纵数据.在Java中,把一组有序的数据序列称为流. 依据操作的方向,能够把流分为输入流和输出流两种.程 ...

  8. [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world

    [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world 原文链接:http://www.cnblogs.com/blog5277/ ...

  9. Java并发编程:Java Thread 的 run() 与 start() 的区别

    1. sleep 和 wait 方法解释 sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后 ...

随机推荐

  1. 对于scanf和cin的输入输出速度的验证

    本文为https://www.byvoid.com/zhs/blog/fast-readfile的验证性文章 --------------------------------------------- ...

  2. 详解jQuery的选择器

    1.基本选择器 基本选择器是jQuery中最常用的选择器,也是最简单的选择器,它通过元素id.class和标签名等来查找DOM对象.在网页中,每个id名称只能使用一次,class允许重复使用. ♠ # ...

  3. MyBasic架构

    MyBasic架构图 2,架构图解析 (1) (2) (3)

  4. apk打包

    1.在导航栏中选择Builder->Generate Signed Apk 2.新建点击Creat new... 3.注意路径后面写apk的名字(这个名字将会显示在手机软件的下方)

  5. iOS项目之企业证书打包和发布

    一.打包ipa 个人发布证书和企业发布证书打包 app 大同小异,只是打包时导出选项不同,企业证书打包选择 Save for Enterprise Deployment ,并最终导出 ipa 包.详细 ...

  6. Android Studio 下载地址 & SDK 更新教程

    Android Studio 下载地址: http://www.android-studio.org/ SDK 更新教程: http://www.androiddevtools.cn/ SDK 推荐使 ...

  7. Word调整表格大小

    在Word文档中创建表格后,用户往往需要根据输入的内容调整表格的行高和列宽,有时也需要对整个表格的大小进行调整. 在选择的表格上右击,选择快捷菜单中的“自动调整”—“根据内容调整表格”命令,Word将 ...

  8. Android性能调优篇之探索垃圾回收机制

    开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...

  9. [Android Traffic] Android网络开启、关闭整理

    转载: http://blog.csdn.net/tu_bingbing/article/details/8469871 近段时间由于要对手机网络状况进行判断.开启和关闭,从网上找了些资料,现整理如下 ...

  10. delphi 接口Interface

    学习 delphi 接口 一切都是纸老虎!!! 第四章          接口 前不久,有位搞软件的朋友给我出了个谜语.谜面是“相亲”,让我猜一软件术语.我大约想了一分钟,猜 出谜底是“面向对象”.我 ...