https://blog.csdn.net/u011001723/article/details/52794455/  :  parallel()其实就是一个并行执行的流.它通过默认的ForkJoinPool,可能提高你的多线程任务的速度.

https://www.cnblogs.com/strivelearn/p/6005649.html   :并发与并行的区别

Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试: 转自:https://blog.csdn.net/qq_27093465/article/details/77770479

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 的循环耗时的对比测试)
* <p>
* Created by lxk on 2017/8/31
*/
public class Performance {
public static void main(String[] args) {
List<String> list = getLoopList();
normalBeforeLoop(list);
normalAfterLoop(list);
notNormalAfterLoop(list);
} private static void notNormalAfterLoop(List<String> 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<String> 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<String> 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<String> getLoopList() {
List<String> list = Lists.newArrayList();
for (int i = 0; i < 10000; i++) {
list.add("item " + i);
}
return list;
}
}

  

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

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

list.stream().parallel() 并行流的更多相关文章

  1. Stream parallel并行流的思考

    1.并行流并不一定能提高效率,就和多线程并不能提高线程的效率一样 因为引入并行流会引起额外的开销,就像线程的频繁上下文切换会导致额外的性能开销一样,当数据在多个cpu中的处理时间小于内核之间的传输时间 ...

  2. jdk8系列三、jdk8之stream原理及流创建、排序、转换等处理

    一.为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX ...

  3. jdk8--stream并行流

    stream的并行流要理解一个框架如下: 单线程,多线程和并行流对比 package com.atguigu.java8; import java.util.concurrent.ForkJoinPo ...

  4. java-11-Stream优化并行流

      并行流    多线程    把一个内容分成多个数据块  不同线程分别处理每个数据块的流   串行流   单线程  一个线程处理所有数据   java8 对并行流优化  StreamAPI 通过pa ...

  5. ForkJoin、并行流计算、串行流计算对比

    ForkJoin 什么是 ForkJoin ForkJoin 是一个把大任务拆分为多个小任务来分别计算的并行计算框架 ForkJoin 特点:工作窃取 这里面维护的都是双端队列,因此但其中一个线程完成 ...

  6. Java8的新特性--并行流与串行流

    目录 写在前面 Fork/Join框架 Fork/Join框架与传统线程池的区别 传统的线程池 Fork/Join框架 Fork/Join框架的使用 Java8中的并行流 写在前面 我们都知道,在开发 ...

  7. Stream的顺序流与并行流

    /** * @auther hhh * @date 2019/1/2 22:52 * @description */ public class StreamAPI2 { /** * 流的特性:支持并行 ...

  8. Stream01 定义、迭代、操作、惰性求值、创建流、并行流、收集器、stream运行机制

    1 Stream Stream 是 Java 8 提供的一系列对可迭代元素处理的优化方案,使用 Stream 可以大大减少代码量,提高代码的可读性并且使代码更易并行. 2 迭代 2.1 需求 随机创建 ...

  9. Fork/Join框架与Java8 Stream API 之并行流的速度比较

    Fork/Join 框架有特定的ExecutorService和线程池构成.ExecutorService可以运行任务,并且这个任务会被分解成较小的任务,它们从线程池中被fork(被不同的线程执行)出 ...

随机推荐

  1. consensus sequence

    consensus sequence:称为一致序列.一些遗传元件(如启动子)中反复出现且很少有改变的DNA序列.不同种生物编码同一种蛋白质的基因也会有共有序列.通过序列比较发现相似但不一定完全相同的核 ...

  2. Queue CodeForces - 353D (思维dp)

    https://codeforces.com/problemset/problem/353/D 大意:给定字符串, 每一秒, 若F在M的右侧, 则交换M与F, 求多少秒后F全在M左侧 $dp[i]$为 ...

  3. java MongoDB查询(一)简单查询

    前言 MongoDB的java驱动提供了查询的功能,查询条件也是bson对象,这篇就看下怎么进行简单的数据查询 1.数据结构 集合:firstCollection 数据内容: { "_id& ...

  4. nyoj38

    布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...

  5. EBS开发附件上传和下载功能(转)

    原文地址: EBS开发附件上传和下载功能 上传 Oracle ERP二次开发中使用的方式有两种,一是通过标准功能,在系统管理员中定义即可,不用写代码,就可以使几乎任何Form具有附件功能,具体参考系统 ...

  6. EBS R12使用接口表往已存在的供应商地址下创建新的地点

    在供应商 "测试供应商A" 下已经有了两个地址,分别为 "地址A","地址B",现在由于某些原因,需要在地址A下面创建新的地点. 由于业务需 ...

  7. OC BLOCK和协议

    一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. block实际上是: 指向结构体的指针 BOLC ...

  8. 消息队列的创建与读写ftok,msgget,msgsnd,msgrcv,指令ipcs,ipcrm 查看,删除消息队列

    ipcs是Linux下显示进程间通信设施状态的工具.可以显示消息队列.共享内存和信号量的信息.对于程序员非常有用,普通的系统管理员一般用不到此指令. ipcs -q 查看系统使用的IPC队列资源 ip ...

  9. sql存储过程中,如何根据指定日期、月数、天数推算预产日期

    我这边有一个业务,根据某个指定日期,推算某个患者的预产日期 原理:比如孕产的预产日期的算法(预产日期 = 末次月经日期+ 10月+8天) 那么我们怎么通过存储过程来实现呢? 首先分析条件 需要一个指定 ...

  10. bzoj1089

    题解: 递推 f[i]=f[i-1]^n+1 ans=f[d]-f[d-1] 代码: #include<bits/stdc++.h> using namespace std; int n, ...