Spliterator 介紹
Spliterator 接口是 Java 爲了並行遍歷數據源中的元素而設計的迭代器,這個可以類比最早 Java 提供的順序遍歷迭代器 Iterator,但一個是順序遍歷,一個是並行遍歷。
從最早順序遍歷迭代器 Iterator 時,那個時候還是單核時代,但現在多核時代下,順序遍歷已經不能滿足需求了,如何把多個任務分配到不同核上並行執行,纔是能最大發揮多核的能力,所以 Spliterator 應運而生啦。
使用示例
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for (int i = 0; i < 50 ; i++) {
list.add(i+"");
}
// 分割迭代器
Spliterator spliterator = list.spliterator();
Spliterator s1 = spliterator.trySplit();
Spliterator s2 = spliterator.trySplit();
System.out.println("=============== list ================");
spliterator.forEachRemaining((i) -> System.out.print(i+" "));
System.out.println();
System.out.println("=============== s1 ================");
s1.forEachRemaining((i) -> System.out.print(i+" "));
System.out.println();
System.out.println("=============== s2 ================");
s2.forEachRemaining((i) -> System.out.print(i+" "));
System.out.println();
}
}
=============== list ================
37 38 39 40 41 42 43 44 45 46 47 48 49
=============== s1 ================
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
=============== s2 ================
25 26 27 28 29 30 31 32 33 34 35 36