在之前的博文里有说过executor框架,其实Fork/Join就是继承executor的升级版啦
executor用于创建一个线程池,但是需要手动的添加任务,如果需要将大型任务分治,显然比较麻烦
而Fork/Join则是解决这个问题的计算框架
用户定义部分:
如何分治 (compute(1 , 10))
定义一个函数用于分治,如果处理区间太大则分开,递归的调用自己 (compute(1 , 5) compute(6 , 10))
如何计算 (compute(1 , 5))
如果区间合适则计算
框架执行部分:
此处的重点是work-stealing,分治好的任务会分配给对应的线程,而一个线程完成任务后 会向其他线程偷任务来干
至于框架的作用就是 开发者只需关注实现细节 如何计算 和 简单的分治过程,具体的线程调用由框架完成
再直接点就是一个多线程的递归!