课程咨询 :186-8884-0703
咨询QQ:1615412715

深圳Java培训 > 达内新闻 > 【深圳Java培训】处理器发展的产物-Fork Join
  • 【深圳Java培训】处理器发展的产物-Fork Join

    发布:深圳Java培训      来源:达内新闻      时间:2016-11-21

  • 相信大家还记得上一篇文章深圳java培训(sz.java.tedu.cn)专家说的是处理器发展和需求背景吧,那么这一章就接着说一下在这种背景下的产物Fork Join吧。

    <a style='color:blue' href='http://sz.java.tedu.cn/'>深圳Java培训</a>机构

    Fork Join 的设计

    看过《Introduction to Algorithms》(《算法导论》)的朋友们应该还记得,在讲到归并排序(Merge Sort)和快速排序的时候,有一种很简单又很有效率的思路就是“分而治之”,即“分治法”。而Fork Join的思路也是同理,只不过划分之后的任务更适合分派给不同的计算资源,可以并行的完成任务。

    深圳Java培训机构

    当计算分别完成之后,最后再合并回来。简单来看,就是一个递归的分解和合并,直到任务小到可以接受的程度。

    Fork Join 要点

    Fork Join设计出来就是为了提高任务完成的效率,围绕这个目标,有一些要点是设计中需要考虑的,下面就给出一些要点。

    线程的管理和线程的单纯性。基于如上的设计思路,我们可以看到子任务之间的相关性是相对比较简单的,可以并行处理。为了提高效率,并不需要重量级的线程结构和对应的线程维护,线程实现简单就好,满足需求即可,降低维护成本。

    队列机制,硬件支持一定是比较有限的,那么分解的任务应该用队列维护起来,一个好的队列设计是很有必要的。

    “工作窃取”,也就是设计论文原文中提到的 Work Stealing 。对于负载比较轻的线程,可以帮助负载较重的执行线程分担任务。

    使用Fork Join的注意事项:

    可用线程数和硬件支持。线程这东西,也是有开销的东西,绝对不是越多越好,尤其在硬件基础有限的情况下。

    任务分解的粒度。和前者有关系,就是分解的任务,“小”到什么程度是可以接受的,不可再分。

    Fork Join数据结构支持

    按照如上设计,分解执行一个大的任务,Fork Join至少需要考虑如下一些数据结构。

    轻量级的线程结构。

    维护线程的线程池,负责线程的创建,数量维护和任务管理。

    维护任务,并支持Work Stealing的双端队列,如下图:

    深圳Java培训机构

    对于子任务的分解,可以从后端取出分解再放入,而对于WorkStealing则可以从头部取出,放入其他队列的尾部。

    好了,今天关于Fork Join的话题就说到这里,如果想学习的同学可以参加深圳达内JAVA培训,免费试听,或周末免费参加深圳JAVA培训公 开课程试听,这里有强大的师资阵容,“师者,所以传道授业解惑也”,讲师,是教育的主体,是影响整体办学质量、学员学习质量的重要因素。所以深圳达内 JAVA培训竭尽全力为学员提供最强大的师资力量,让学员接受最好的教育,学习最前沿的技术。掌握一门牛逼闪闪技术,待遇自然不在话下。

上一篇:本科生求职难参加达内Java培训,获11K高薪入职上海睿民

下一篇:达内教育集团总裁韩少云:回归本质, 打铁还需自身硬

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:4月28日

Java--零基础周末班

Java--零基础周末班

开班日期:4月28日

Java--大数据全日制班

Java--大数据全日制班

开班日期:4月28日

Java--大数据周末班

Java--大数据周末班

开班日期:4月28日

  • 地址:深圳市宝安区共乐路西乡商会大厦10楼——深圳JAVA培训中心宝安校区
    深圳市龙岗区横岗力嘉路2013文化创客园A栋——深圳JAVA培训中心龙岗校区
  • 课程培训电话:186-8884-0703
    咨询QQ:1615412715 全国免费咨询热线:400-111-8989
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56