什么是ForkJoin框架?
什么是focusjoin框架,focusjoin是一个把大任务分割成若干个小任务,在对每个小任务得到的结果进行汇总,得到大任务结果的框架,简而言之就是分割任务和合并结果,
focusjoin中focus表示分割任务,join表示合并结果。
下面动画演示工作原理,这是一个大任务,根据focusjoin工作原理,将它一分为二,分割成两个子任务,
再将这2个子任务分割成4个子任务,
接着将4个子任务分割成8个子任务,任务还不够小,继续将8个子任务分割成16个子任务,
这样就差不多了,将大任务分割完以后,接下来就是执行这些子任务,子任务全部执行完毕以后,
将这16个子任务的执行结果合并成8个结果,
再将这8个结果合并成4个结果,
再将这4个结果合并成2个结果,
最后将这2个结果合并成最终结果,最终结果就是大任务的结果。
至此大任务执行完成,看完动画如果还不理解没关系,
我们来看focusjoin流程图,用流程图来表示可能会更直观,这是我们要执行的大任务,将其分割成两个子任务,
两个子任务继续分割,
分割到足够小以后,
将这些子任务提交给线程池去执行,这种方式远比让一个线程去执行大任务要高效的多,他们执行完以后,
根据focusjoin的工作原理,合并其子任务执行结果,不断合并结果,
直至合并出大任务的结果为止。至此大任务通过分割任务与合并结果的方式执行完毕。
如果我们在流程图中间画一道分割线的话,上半部分就是在fork,也就是在分割任务,下半部分就是在join,也就是在合并结果,这次focusjoin流程图整个就是这样,
总结
最后来总结一下本节内容。
本节介绍了什么是focusjoin框架,它的概述和工作原理,这里就不再赘述了。下一节介绍一个采用focusjoin框架的线程池,focusjoinPool
附录:
笔记完整文本:
什么是focusjoin框架,focusjoin是一个把大任务分割成若干个小任务,在对每个小任务得到的结果进行汇总,得到大任务结果的框架,简而言之就是分割任务和合并结果,focusjoin中focus表示分割任务,join表示合并结果。下面动画演示工作原理,这是一个大任务,根据focusjoin工作原理,将它一分为二,分割成两个子任务,再将这2个子任务分割成4个子任务,接着将4个子任务分割成8个子任务,任务还不够小,继续将8个子任务分割成16个子任务,这样就差不多了,将大任务分割完以后,接下来就是执行这些子任务,子任务全部执行完毕以后,将这16个子任务的执行结果合并成8个结果,再将这8个结果合并成4个结果,再将这4个结果合并成2个结果,最后将这2个结果合并成最终结果,最终结果就是大任务的结果。 至此大任务执行完成,看完动画如果还不理解没关系,我们来看focusjoin流程图,用流程图来表示可能会更直观,这是我们要执行的大任务,将其分割成两个子任务,两个子任务继续分割,分割到足够小以后,将这些子任务提交给线程池去执行,这种方式远比让一个线程去执行大任务要高效的多,他们执行完以后,根据focusjoin的工作原理,合并其子任务执行结果,不断合并结果,直至合并出大任务的结果为止。至此大任务通过分割任务与合并结果的方式执行完毕。如果我们在流程图中间画一道分割线的话,上半部分就是在fork,也就是在分割任务,下半部分就是在join,也就是在合并结果,这次focusjoin流程图整个就是这样,最后来总结一下本节内容。 本节介绍了什么是focusjoin框架,它的概述和工作原理,这里就不再赘述了。下一节介绍一个采用focusjoin框架的线程池,focusjoinPool