ForkJoin框架與分治思想詳解
阿新 • • 發佈:2020-10-23
ForkJoin框架與分治思想詳解
一、面試高頻演算法-歸併外排詳解
- 只用100M記憶體,如何快速完成對10G檔案中資料的排序
- 內排(在記憶體中完成排序)
- 冒泡、快排…
- 外排(排序的過程借用 外部儲存)
- 案件的處理
- 首先按照記憶體的大小分次讀取生成n個100M檔案
- 分別讀取檔案 一次讀取兩個檔案中的第一個數 排大小 小的進新生成的檔案 生成n/2個人間
- 繼續讀取兩個檔案 分別排序 繼續重新生成檔案
- 內排(在記憶體中完成排序)
- 歸併排序
- 先把大任務分成多個小任務
- 小任務排序後兩兩歸併(可以使用多執行緒提高效率)
二、ForkJoin框架的妙處
-
Java執行緒API Java併發包
-
ForkJoinPool
-
並行度(執行緒數)
-
引數即並行度
-
並行度預設是處理器的核心數(計算型的任務 所以不需要太多的執行緒數)
-
-
提交任務
-
compute(計算)
-
實現
-
- invokeAll 開始拆分
- merge 合併
-
-
三、分治思想
- 百萬級併發如何處理?
- 千億級資料如何高效儲存與計算