ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 分支合并(ForkJoin)

2020-02-23 10:58:34  阅读:243  来源: 互联网

标签:Java ForkJoinPool 任务 线程 执行 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,ForkJoinPool,任务,线程,执行,ForkJoin,窃取,分支
来源: https://www.cnblogs.com/ruhuanxingyun/p/12348709.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有