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. 浅谈单页应用和多页应用——Vue.js向

    浅谈单页应用和多页应用--Vue.js向 多页面 多页面应用:每次页面跳转,后台都会返回一个新的HTML文档,就是多页面应用. 在以往传统开发的应用(网站)大多都是多页面应用,路由由后端来写. 页面跳 ...

  2. Struts2遇到Caused by Action class not found这类问题怎么解决

    刚才碰到个小坑,显示的错误是struts.xml找不到Action,明显不会有错的因为之前还是正常跑起来的,然后百度google搜了一通没解决,maven clean用了没反应还是照样报错. 最后在百 ...

  3. python 统计发送请求到接收response的时间

    由于需要测试请求一个接口所耗用的时间,在网上查找资料也麻烦,所以自己总结一下 找到elapsed 函数 ,按照文档说的是获取请求发出的时间至响应到达经过的时间,,具体用法如下: 执行的结果是 微秒 单 ...

  4. 1.4(Spring学习笔记)Spring-JDBC基础

    一.Spring JDBC相关类 1.1 DriverManagerDataSource DriverManagerDataSource主要包含数据库连接地址,用户名,密码. 属性及含义如下配置所示: ...

  5. Spinner控件:Spinner绑定的监听是SetOnItemSelectedListener

    (一) 1.效果图:ArrayAdapter可以不用设置 arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_it ...

  6. NDK之打印调试信息Log

    第一步:gradle配置ndk ndk { moduleName "Iso8583Lib" ldLibs "log", "z", " ...

  7. SQL Server 事务隔离级别的解析

    近来在项目中遇到的一些有关事务的问题,跟同事间讨论了一下,后面翻看了一些书籍和做了一些测试,趁有点时间把它写下来,一来加深印象,二来希望对大家有所帮助,当然,由于自身水平问题,如理解有误,还请大牛指出 ...

  8. 部署web Service到tomcat

    建立项目 打开jdeveloper 12c,然后新建一个java项目,点击java,生成web services. package simple; import javax.jws.WebMethod ...

  9. PostgreSQL配置文件--复制

    4 复制 REPLICATION 4.1 Sending Server(s) 4.1.1 max_wal_senders 数字型 默认: max_wal_senders = 10 , 为0表示启用流复 ...

  10. JVM监测分析JConsole

    一.基本操作   启动界面 1.JConsole是什么 从Java 5开始引入了JConsole.JConsole是一个内置Java性能分析器,可以从命令行或在GUI shell中运行.您可以轻松地使 ...