一、ForkJoin简介
- ForkJoin是JDK1.7引入的一钟新的并发框架,主要用于实现 分而治之 的算法。
- 简单的讲就是,把一个大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务的计算结果。
二、如何使用
- 只需要两个类即可:
- ForkJoinPool
ForkJoinPool
它和ThreadPoolExecutor
一样,也实现了Executor和ExecutorService接口。- 它使用了一个无限队列来保存需要执行的任务,如果没有像构造函数中传入线程数量,则默认使用计算机CPU数量为线程数量
- 它是来运行 ForkJoinTask 任务的。
- ForkJoinTask
- ForkJoinTask就是我们要分割的任务实现
- 框架帮我们封装好了两个实现类:
- RecursiveAction 用于没有返回结果的任务
- RecursiveTask 用于有返回结果的任务
- 然后我们还要设置一个任务分割的阈值
三、代码案例实现
- 实现需求:计算2个数之间的和
- 代码如下:
/** |
- 需求二: 求一个集合的总和
- 代码如下:
/** |
- 上面的示例代码算是入门版的ForkJoin,只有理解掌握了,我们就可以写出复杂的ForkJoin了。