并行数组排序
Stream都有两种模式:顺序执行和并行执行。比如:
1 2 3
| List <Person> people = list.getStream.collect(Collectors.toList());
|
并行执行为:
1 2 3
| 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(),可以显著加快多核机器上的数组排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| package com.ehking.example.java8.newfeature.demo08;
import java.util.Arrays; import java.util.concurrent.ThreadLocalRandom;
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();
}
}
|