JDK1.8--序列排序和並行排序對比
阿新 • • 發佈:2018-11-01
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);
}
}