使用Folk/Join框架实现多核并行计算学习笔记
背景最近温习《Java虚拟机精讲》的时候,里面有提到使用Folk/Join框架实现多核并行计算,似乎有点陌生又有点熟悉,原来真的好久没用了,根据书上的相关资料,自Java7开始新增在java.util.concurrent包下面新增了基于细粒度的多核并行计算Folk/Join框架。它的主要思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。这种思想和开源基金会Apache提供的Hadoop里面MapReduce很像(input –> split –> map –> reduce –> output)
主要有两步:
第一、任务切分(Folk)
第二、结果合并 (Join)
使用说明自JDK1.7开始,java.util.concurrent包下提供了ForkJoinPool来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合并成总的计算结果。多线程ForkJoinPool运用了Fork/Join原理,使用“分而治之”的思想,将大任务分拆成小任务分配给多个线程执行,最后合并得到最终结果,加快运算。