1. 程式人生 > >JDK1.8--序列排序和並行排序對比

JDK1.8--序列排序和並行排序對比

xl_echo編輯整理,交流學習請加1280023003 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!!


在 Java 8 中, 集合介面有兩個方法來生成流:

  • stream() − 為集合建立序列流。
  • parallelStream() − 為集合建立並行流。

序列流和並行流對比,如果在資料量比較少的情況下,序列流更快。而資料量大時並行流會更快。

package demo;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit; public class JDKStrem { public static void main(String[] args){ int size = 5000000; List<String> uuisList = new ArrayList<>(size); //生成500萬個uuid for (int i = 0; i< size; i++){ uuisList.add(UUID.randomUUID().toString
()); } parallelSorted(uuisList); streamSorted(uuisList); } //並行排序 public static void parallelSorted(List<String> uuisList){ System.out.println("開始並行排序"); long startTime = System.nanoTime();//納秒,更為精確 uuisList.parallelStream().sorted().count();//並行排序 long
endTime = System.nanoTime();//納秒,更為精確 long distanceTime = TimeUnit.NANOSECONDS.toMillis(endTime - startTime); System.out.println("結束並行排序 耗時為 " + distanceTime); } //序列排序 public static void streamSorted(List<String> uuisList){ System.out.println("開始序列排序"); long startTime = System.nanoTime();//納秒,更為精確 uuisList.parallelStream().sorted().count();//序列排序 long endTime = System.nanoTime();//納秒,更為精確 long distanceTime = TimeUnit.NANOSECONDS.toMillis(endTime - startTime); System.out.println("結束序列排序 耗時為 " + distanceTime); } }