Java 函數語言程式設計 - 並行執行



並行執行是函數語言程式設計的一個關鍵概念,它透過把大任務分解成更小的獨立任務來完成,然後以並行方式完成這些小任務,最後將結果合併在一起得到完整的結果。隨著多核處理器的出現,此技術有助於更快地執行程式碼。Java 有基於執行緒的程式設計支援以實現並行處理,但它比較難學,而且不借助錯誤很難實現。從 Java 8 起,流有 parallel 方法,集合有 parallelStream() 方法,可並行完成任務。請看以下示例

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FunctionTester {
   public static void main(String[] args) {

      Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8 };
      List<Integer> listOfIntegers = new ArrayList<>(Arrays.asList(intArray));

      System.out.println("List using Serial Stream:");
      listOfIntegers
         .stream()
         .forEach(e -> System.out.print(e + " "));
      System.out.println("");

      System.out.println("List using Parallel Stream:");
      listOfIntegers
         .parallelStream()
         .forEach(e -> System.out.print(e + " "));
      System.out.println("");

      System.out.println("List using Another Parallel Stream:");
      listOfIntegers
         .stream()
         .parallel()
         .forEach(e -> System.out.print(e + " "));
      System.out.println("");

      System.out.println("List using Parallel Stream but Ordered:");
      listOfIntegers
         .parallelStream()
         .forEachOrdered(e -> System.out.print(e + " "));
         System.out.println(""); 
   } 
}

輸出

List using Serial Stream:
1 2 3 4 5 6 7 8 
List using Parallel Stream:
6 5 8 7 3 4 2 1 
List using Another Parallel Stream:
6 2 1 7 4 3 8 5 
List using Parallel Stream but Ordered:
1 2 3 4 5 6 7 8 
廣告
© . All rights reserved.