ForkJoin框架与分治思想详解
ForkJoin框架与分治思想详解
一、面试高频算法-归并外排详解
-
只用100M内存,如何快速完成对10G文件中数据的排序
- 内排(在内存中完成排序)
- 冒泡、快排…
- 外排(排序的过程借用 外部存储)
- 案件的处理
- 首先按照内存的大小分次读取生成n个100M文件
- 分别读取文件 一次读取两个文件中的第一个数 排大小 小的进新生成的文件 生成n/2个人间
- 继续读取两个文件 分别排序 继续重新生成文件
- 内排(在内存中完成排序)
- 归并排序
- 先把大任务分成多个小任务
- 小任务排序后两两归并(可以使用多线程提高效率)
二、ForkJoin框架的妙处
-
Java线程API Java并发包
-
ForkJoinPool
-
并行度(线程数)
-
参数即并行度
-
并行度默认是处理器的内核数(计算型的任务 所以不需要太多的线程数)
-
-
提交任务
-
compute(计算)
-
实现
-
- invokeAll 开始拆分
- merge 合并
-
-
三、分治思想
- 百万级并发如何处理?
- 千亿级数据如何高效存储与计算