JDK8中并行流与串行流的工作原理及区别是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1422个文字,预计阅读时间需要6分钟。
由于处理器核心的增加以及较低的硬件成本,低成本的集群系统得以实现,使得并行编程变得无处不在。并行编程似乎成了下一件大事。
Java 8 提供了新的 stream API 和简化了创建并行的便利性。
由于处理器核心的增长及较低的硬件成本允许低成本的集群系统,致使如今并行编程无处不在,并行编程似乎是下一个大事件。
Java 8 针对这一事实提供了新的 stream API 及简化了创建并行集合和数组的代码。让我们看一下它是怎么工作的。
假设 myList 是 List<Integer> 类型的,其中包含 500,000 个Integer值。在Java 8 之前的时代中,对这些整数求和的方法是使用 for 循环完成的。
for( int i : myList){ result += i; }
从 Java 8 开始,我们就可以使用stream完成同样的循环:
myList.stream().sum();
将此代码改为并行处理非常简单,仅需要使用 parallelStream() 代替 stream() 或 parallel()搭配stream使用:
mylist.stream().parallelStream().sum();
这样就可以成功的变为并行程序,所以将一个计算扩展到线程和CPU内核上并可用很容易就可以实现。但是我们都知道,多线程和并行处理的开销很大,所以重点是什么时候使用并行流,什么时候使用串行流才能获得更好的性能。
首先,让我们看看在幕后发生的事情。
本文共计1422个文字,预计阅读时间需要6分钟。
由于处理器核心的增加以及较低的硬件成本,低成本的集群系统得以实现,使得并行编程变得无处不在。并行编程似乎成了下一件大事。
Java 8 提供了新的 stream API 和简化了创建并行的便利性。
由于处理器核心的增长及较低的硬件成本允许低成本的集群系统,致使如今并行编程无处不在,并行编程似乎是下一个大事件。
Java 8 针对这一事实提供了新的 stream API 及简化了创建并行集合和数组的代码。让我们看一下它是怎么工作的。
假设 myList 是 List<Integer> 类型的,其中包含 500,000 个Integer值。在Java 8 之前的时代中,对这些整数求和的方法是使用 for 循环完成的。
for( int i : myList){ result += i; }
从 Java 8 开始,我们就可以使用stream完成同样的循环:
myList.stream().sum();
将此代码改为并行处理非常简单,仅需要使用 parallelStream() 代替 stream() 或 parallel()搭配stream使用:
mylist.stream().parallelStream().sum();
这样就可以成功的变为并行程序,所以将一个计算扩展到线程和CPU内核上并可用很容易就可以实现。但是我们都知道,多线程和并行处理的开销很大,所以重点是什么时候使用并行流,什么时候使用串行流才能获得更好的性能。
首先,让我们看看在幕后发生的事情。

