Java 8函数编程轻松入门(五)并行化(parallel)
2016-10-27 21:22
218 查看
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。
相关文章推荐
- Java 8函数编程轻松入门(三)默认方法详解(default function)
- Java 8函数编程轻松入门(四)方法引用
- Java 8 Lambda函数编程入门(三)
- java8入门必备——函数式编程思维——过滤函数的同义异名问题
- Java 8 Lambda函数编程入门(四)
- Java 8 Lambda函数编程入门(一)
- Java 8 Lambda函数编程入门(五)
- Java并发编程四:并发(Concurrent)与并行(Parallel)区别(二)
- Java 8 Lambda函数编程入门(二)
- C++ STL编程轻松入门基础
- Java泛型编程快速入门
- Java加密和数字签名编程快速入门
- AOP编程入门--Java篇
- Java基础:Java泛型编程快速入门
- OpenGL编程轻松入门(三)
- C#轻松入门(三)面向对象的编程基础
- AOP编程入门--Java篇
- java socket编程入门与示例
- 流行实用Java对象持久化技术 - Hibernate轻松入门(2)
- C++ STL编程轻松入门基础