第六章 数据并行化

6.1 并行和并发

并发是两个任务共享时间段

并行则是两个任务同一时间发生,比如运行在多核CPU上。

如果一个程序有两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发。

并行化是指为缩短任务执行时间,将一个任务分解为几个部分,然后再多核CPU上并行执行。这和顺序执行的任务量是一样的。

本章将讨论数据并行化数据并行化是指将数据分成块,为每块数据分配单独的处理单元,然后对每块数据执行运算,最后将数据块上的结果汇总。


6.3 并行化流操作

并行化流操作只需要调用stream对象的parallel 方法就能让其拥有并行操作的能力,或者从一个集合对象调用parallelStream方法创建一个拥有并行能力的流。

//并行化计算专辑曲目长度

albums.parallelStream().flatMap(Album::getTracks).maToInt(Track::getLength).sum();



6.7 并行化数组操作

//使用数组下标初始化数组

public static double[] parallelInitialize(int size){

       double[] values =new double[size];

      Arrays.parallelSetAll(values,i->i);

     return values;

}

parallelPrefix操作会更新一个数组,将每一个元素替换为当前元素和其先驱元素的和,这里的和是一个任意的BinaryOperator。

parallelSort 并行化对数组元素进行排序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在Java8中,编写并行化的程序很容易。从外部迭代到内部迭代的过程,让编写简洁的代码更加容易,也让程序员不需要手动...
    大唐雷恋阅读 1,093评论 0 0
  • 在Java 7之前,并行处理数据集合非常麻烦。第一,你得明确地把包含数据的数据结构分成若干子部分。第二,你要给每个...
    夏与清风阅读 920评论 0 1
  • 1.并发 1.1.两个任务共享时间段 1.2.一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,...
    躺柒阅读 96评论 0 1
  • 并行流parallelStream并行流就是一个把内容分成多个数据块,并用不同的线程分别处理每个数据块的流。这样就...
    PawsUp阅读 1,081评论 0 0
  • 1、使用并行流过滤数据 案例:统计1-1000000内所有的质数数量。 2、从集合中得到并行流 在函数式编程中,我...
    夏与清风阅读 1,235评论 0 1