Java 8函數編程輕鬆入門(五)並行化(parallel)

  • 1.併發與並行的區別

  • 併發: 一個時間段內有幾個程序都處於已啓動到運行完畢之間,且這幾個程序都是在同一個處理機上運行。但在任一個時刻點只有一個程序在處理機上運行
  • 並行: 在同一個時刻,多核處理多個任務。把工做拆分,同時在多核CPU上執行java

  • 2.parallelStream及parallel

  • 在C#中,有Parallel類提供並行編程,一樣在Java 8中針對Stream,Java 8也提供了parallelStream並行化編程。
  • 2.1C#的Parallel

static void Main(string[] args)
    {
        List<int> array = new List<int> { 1, 2, 3, 4, 5 };
        Parallel.ForEach(array, Console.WriteLine);
        Console.ReadKey();
    }
  • 2.2Java 8的parallelStream

public static void main(String[] args) {
    List<Integer> array = new ArrayList<Integer>() {{
        add(1);
        add(2);
        add(3);
        add(4);
        add(5);
    }};
    array.stream().forEach(u -> System.out.print(u + ","));//按照正常順序輸出 1,2,3,4,5,
    System.out.println("----------parallel執行分割線------------");
    array.parallelStream().forEach(u -> System.out.print(u + ","));//隨機輸出 3,5,4,1,2,
}
  • 3.影響並行流的主要五個因素

  • 3.1數據大小

  • 輸入數據的大小會影響並行化處理,當只有足夠大、每一個數據處理管道花費的時間足夠多時,並行化纔有意義編程

  • 3.2源數據結構

  • 通常都是基於集合進行並行化數據結構

  • 3.3裝箱

  • 處理基本類型比處理裝箱類型要快併發

  • 3.4核的數量

  • 只有在多核的機器上使用纔有意義,而且是運行時可以使用的多少核函數式編程

  • 3.5單元處理開銷

  • 原先處理耗時較長,使用並行化纔有意義函數

  • 4.總結

  • 經過5篇文章的講解及對照C#來看,咱們大體能將Java 8函數式編程弄明白。
  • 對我而言,Java 8的函數式編程相似C#提供的Lambda。code

相關文章
相關標籤/搜索