1. 程式人生 > 實用技巧 >ForkJoin框架與分治思想詳解

ForkJoin框架與分治思想詳解

ForkJoin框架與分治思想詳解

一、面試高頻演算法-歸併外排詳解

  1. 只用100M記憶體,如何快速完成對10G檔案中資料的排序
    • 內排(在記憶體中完成排序)
      • 冒泡、快排…
    • 外排(排序的過程借用 外部儲存)
    • 案件的處理
      • 首先按照記憶體的大小分次讀取生成n個100M檔案
      • 分別讀取檔案 一次讀取兩個檔案中的第一個數 排大小 小的進新生成的檔案 生成n/2個人間
      • 繼續讀取兩個檔案 分別排序 繼續重新生成檔案
  2. 歸併排序
    • 先把大任務分成多個小任務
    • 小任務排序後兩兩歸併(可以使用多執行緒提高效率)

二、ForkJoin框架的妙處

  1. Java執行緒API Java併發包

    • 在這裡插入圖片描述
  2. ForkJoinPool
    在這裡插入圖片描述

    • 並行度(執行緒數)

      • 引數即並行度

        在這裡插入圖片描述

      • 並行度預設是處理器的核心數(計算型的任務 所以不需要太多的執行緒數)
        在這裡插入圖片描述

    • 提交任務
      在這裡插入圖片描述

    • compute(計算)

      • 實現

      • 在這裡插入圖片描述

        • invokeAll 開始拆分

        在這裡插入圖片描述

        • merge 合併

        在這裡插入圖片描述

三、分治思想

  • 百萬級併發如何處理?

在這裡插入圖片描述

  • 千億級資料如何高效儲存與計算
    在這裡插入圖片描述