美文网首页工作生活
新特性8-并行数组排序

新特性8-并行数组排序

作者: 三秋十里 | 来源:发表于2019-07-04 15:46 被阅读0次

    Stream都有两种模式:

    顺序执行和并行执行。比如:
    List <Person> people = list.getStream.collect(Collectors.toList());

    并行执行为:
    List <Person> people = list.getStream.parallel().collect(Collectors.toList());

    在Java 7中已经有了Arrays.sort()方法可对对象进行排序,而在Java 8中,引入了新的并行排序,它比前者的排序速度更快,且遵循了Java 7引入的Fork/Join框架,可以把排序任务分配给线程池中可用的多个线程。 Java 8在java.util.Arrays类中新增了并行排序功能,能够更充分地利用多线程机制,最重要的方法是parallelSort(),可以显著加快多核机器上的数组排序。

    package com.ehking.example.java8.newfeature.demo08;
    
    import java.util.Arrays;
    import java.util.concurrent.ThreadLocalRandom;
    
    /**
     * Created by shiyanwu on 2017/4/17.
     * 这段代码使用parallelSetAll()方法生成20000个随机数,
     * 然后使用parallelSort()方法进行排序。这个程序会输出乱序数组和排序数组的前10个元素。
     */
    public class Java8ParallelArrays {
    
        public static void main(String[] args) {
    
            long[] arrayOfLong = new long[20000];
    
            Arrays.parallelSetAll(arrayOfLong,
                    index -> ThreadLocalRandom.current().nextInt(1000000));
            Arrays.stream(arrayOfLong).limit(10).forEach(
                    i -> System.out.print(i + " "));
            System.out.println();
    
            Arrays.parallelSort(arrayOfLong);
            Arrays.stream(arrayOfLong).limit(10).forEach(
                    i -> System.out.print(i + " "));
            System.out.println();
        }
    }
    

    相关文章

      网友评论

        本文标题:新特性8-并行数组排序

        本文链接:https://www.haomeiwen.com/subject/xnrrhctx.html