今天是高考的日子,是大四师兄师姐答辩毕业的日子。一代又来,一代又去。好久没写博客,借此特殊日子整理一下前不久学java8新特性时写的代码,留下痕迹。(本博客的代码根据 java8新特性教程 学习整理,加上个人的理解而成,关于某个新特性的介绍代码里的注释已经阐述清楚,故不再写文字介绍,直接看代码吧!)
本篇介绍java8的新特性之一:并行流parallelStream。
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
/**
Parallel Streams , 并行流提高性能
流可以是顺序的也可以是并行的。顺序流的操作是在单线程上执行的,而并行流的操作是在多线程上并发执行的。
*/
public class ParallelStreams {
int max = 1000_000;
List<String> values;
public ParallelStreams(){
//创建一个包含唯一元素的大容器:
values = new ArrayList<String>();
for(int i=max; i>0; i--){
UUID uuid = UUID.randomUUID();
values.add(uuid.toString());
}
}
//测试排序这些元素需要多长时间。
//Sequential Sort, 采用顺序流进行排序
@Test
public void sequentialSort(){
long t0 = System.nanoTime();
long count = values.stream().sorted().count();
System.err.println("count = " + count);
long t1 = System.nanoTime();
long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);
System.out.println(String.format("sequential sort took: %d ms", millis));
//sequential sort took: 1932 ms
}
//parallel Sort, 采用并行流进行排序
@Test
public void parallelSort(){
long t0 = System.nanoTime();
long count = values.parallelStream().sorted().count();
System.err.println("count = " + count);
long t1 = System.nanoTime();
long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);
System.out.println(String.format("parallel sort took: %d ms", millis));
//parallel sort took: 1373 ms 并行排序所花费的时间大约是顺序排序的一半。
}
}
详情请见这篇博客: java8新特性教程
本文通过对比顺序流与并行流在大数据容器排序上的性能差异,介绍了Java8中并行流parallelStream的使用方法。实验结果显示,在进行大规模数据排序时,并行流能显著提升程序运行效率。

884

被折叠的 条评论
为什么被折叠?



