Java 分支合并(ForkJoin)
Posted 如幻行云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 分支合并(ForkJoin)相关的知识,希望对你有一定的参考价值。
简介:Fork/Join是由Java 7提供的并行执行任务框架,思路就是任务切分,结果合并,同时利用工作窃取机制,目的是提高效率。
1. 概念
A. 分而治之:即将任务划分为多个子任务,然后并行的执行这些子任务,等所有子任务都结束的时候,再合并成最终结果;
B. 工作窃取:当一个工作线程的本地没有任务去运行的时候,它将使用先进先出(FIFO)的规则尝试随机的从别的工作线程中拿一个任务去运行,工作开始从头,窃取从尾。
2. 核心类
A. ForkJoinPool是用于执行ForkJoinTask任务的执行池,维护了一个队列数组;
B. WorkQueue是ForkJoinPool的一个内部类;
C. ForkJoinWorkPool是用于执行任务的线程,每一个线程都有对应的一个WorkQueue;
D. ForkJoinTask代表正在ForkJoinPool中运行的任务
fork:安排任务异步执行,即创建一个子任务,
join:当任务完成后返回计算结果,
invoke:开始执行,如果计算没有完成,就会等待;
3. RecursiveTask和RecursiveAction的区别
A. RecursiveTask有返回值,而RecursiveAction没有返回值
以上是关于Java 分支合并(ForkJoin)的主要内容,如果未能解决你的问题,请参考以下文章
GitGit 分支管理 ( 解决分支合并冲突 | 前置环境准备 | 远程仓库发起分支合并 | 在远程仓库解决分支冲突 | 在远程仓库正式合并分支版本 )
GitGit 分支管理 ( 解决分支合并冲突 | 前置环境准备 | 远程仓库发起分支合并 | 在远程仓库解决分支冲突 | 在远程仓库正式合并分支版本 )