jdk8并行流,本篇介绍java8的新特性之一:并行流parallelStream。
importjava.util.ArrayList; importjava.util.List; importjava.util.UUID; importjava.util.concurrent.TimeUnit; importorg.junit.Test; /**
ParallelStreams,并行流提高性能
流可以是顺序的也可以是并行的。顺序流的操作是在单线程上执行的,而并行流的操作是在多线程上并发执行的。
*/ publicclassParallelStreams{ intmax=1000_000; Listvalues; publicParallelStreams(){ //创建一个包含唯一元素的大容器: values=newArrayList(); for(inti=max;i>0;i--){ UUIDuuid=UUID.randomUUID(); values.add(uuid.toString()); } } //测试排序这些元素需要多长时间。 //SequentialSort,采用顺序流进行排序 @Test publicvoidsequentialSort(){ longt0=System.nanoTime(); longcount=values.stream().sorted().count(); System.err.println("count="+count); longt1=System.nanoTime(); longmillis=TimeUnit.NANOSECONDS.toMillis(t1-t0); System.out.println(String.format("sequentialsorttook:%dms",millis)); //sequentialsorttook:1932ms } //parallelSort,采用并行流进行排序 @Test publicvoidparallelSort(){ longt0=System.nanoTime(); longcount=values.parallelStream().sorted().count(); System.err.println("count="+count); longt1=System.nanoTime(); longmillis=TimeUnit.NANOSECONDS.toMillis(t1-t0); System.out.println(String.format("parallelsorttook:%dms",millis)); //parallelsorttook:1373ms并行排序所花费的时间大约是顺序排序的一半。 } }