Java 併發 - Spliterator 接口

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章