zoukankan      html  css  js  c++  java
  • Java 8函数编程轻松入门(五)并行化(parallel)

    • 1.并发与并行的区别

    • 并发: 一个时间段内有几个程序都处于已启动到运行完毕之间,且这几个程序都是在同一个处理机上运行。但在任一个时刻点只有一个程序在处理机上运行

    • 并行: 在同一个时刻,多核处理多个任务。把工作拆分,同时在多核CPU上执行

    • 2.parallelStream及parallel

    • 在C#中,有Parallel类提供并行编程,同样在Java 8中针对Stream,Java 8也提供了parallelStream并行化编程。

    • 2.1C#的Parallel

    static void Main(string[] args)
        {
            List<int> array = new List<int> { 1, 2, 3, 4, 5 };
            Parallel.ForEach(array, Console.WriteLine);
            Console.ReadKey();
        }
    
    • 2.2Java 8的parallelStream

    public static void main(String[] args) {
        List<Integer> array = new ArrayList<Integer>() {{
            add(1);
            add(2);
            add(3);
            add(4);
            add(5);
        }};
        array.stream().forEach(u -> System.out.print(u + ","));//按照正常顺序输出 1,2,3,4,5,
        System.out.println("----------parallel执行分割线------------");
        array.parallelStream().forEach(u -> System.out.print(u + ","));//随机输出 3,5,4,1,2,
    }
    
    • 3.影响并行流的主要五个因素

    • 3.1数据大小

    • 输入数据的大小会影响并行化处理,当只有足够大、每个数据处理管道花费的时间足够多时,并行化才有意义

    • 3.2源数据结构

    • 一般都是基于集合进行并行化

    • 3.3装箱

    • 处理基本类型比处理装箱类型要快

    • 3.4核的数量

    • 只有在多核的机器上使用才有意义,并且是运行时能够使用的多少核

    • 3.5单元处理开销

    • 原先处理耗时较长,使用并行化才有意义

    • 4.总结

    • 通过5篇文章的讲解及对照C#来看,我们大致能将Java 8函数式编程弄明白。

    • 对我而言,Java 8的函数式编程类似C#提供的Lambda。

  • 相关阅读:
    分布式系统与机器学习相关笔记
    天坑:OpenGL制作游戏引擎备忘记录
    2016ACM-ICPC 大连站、青岛站、China-Final 赛后总结(无删版)by wanglangzhe || wmzksana
    CF 609E, 树链剖分
    CF 609F,线段树上二分 + set维护
    CF 540E, 树状数组
    hdu 5726, 2016多校1
    hdu5836, 2016CCPC网络赛
    SYSU-10,URAL 1675,容斥原理
    动态规划基础篇 from 51nod
  • 原文地址:https://www.cnblogs.com/strivelearn/p/6005649.html
Copyright © 2011-2022 走看看