黑马程序员技术交流社区

标题: 【上海校区】Java8新特性——并行流parallelStream [打印本页]

作者: 不二晨    时间: 2018-11-2 09:16
标题: 【上海校区】Java8新特性——并行流parallelStream
好久没写博客,借此特殊日子整理一下前不久学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 并行排序所花费的时间大约是顺序排序的一半。
        }
}


---------------------
【转载】
作者:gdouchufu
原文:https://blog.csdn.net/gdouchufu/article/details/29242429



作者: 不二晨    时间: 2018-11-7 09:03
ヾ(◍°∇°◍)ノ゙
作者: 魔都黑马少年梦    时间: 2018-11-8 17:00





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2