当前位置: 首页 > 网络应用技术

叉 /加入框架基本用途和原理查询(基本章节)

时间:2023-03-07 00:40:25 网络应用技术

  Java 7开始引入一个新的叉/联接线程池,该量池可以执行特殊任务:将大型任务拆除为并行多个小任务。

  让我们举个例子:如果要计算一个大数组的总和,最简单的方法是用一个周期完成一个线程:

  算法原则的简介认为,在学习叉式框架之前,您或多或少学到了学到的学历。ForkJoin框架实际上是线程池执行人员服务的实现。通过WorkD -Therealing算法,可以在其他线程中获得未完成的任务。平行,类似于除法算法。

  实现目标条目的示例,使用叉/联接框架使用示例。在此示例中,我们计算1-5000后的值:

  在这方面,我基于JDK1.8+中的叉/联接框架封装了一个框架。参考叉/联接框架的主要源代码也基于JDK1.8+。

  

  需要注意

  forkjoinpool类的属性介绍

  forkjointask是一个抽象类,可以在forkjoinpool中执行。父班是未来。有许多特定的实施类。在这里,我们主要关注递归和递归术。

  介绍forkjointask类属性:状态:其他工作线程和池可以看到任务的状态。该操作是正常的,异常情况是积极的。

  forkjointask函数简介只需要实现其Compute()方法,即可在Compute(),任务分解(FORK)和结果合并(JOIN)中执行最小任务控制。

  在Forkjoinpool中执行的默认线程是Forkjoinworkrthread。它是由默认工厂生成的,可以重写要自身实现的工作线程。在同一时间,forkjoinpool被引用到偷窃时使用的每个工作线程。

  forkjoinworkerThread分类简介

  实际上,叉/联接框架的内部工作过程比这张图片要复杂得多。例如,如何确定哪个线程用于某个递归任务;在内部后,您是创建一个新线程以运行还是让其等待队列。

  可以说,在加入方法中提供的叉法和联接方法可以说是/加入框架的方法是框架中提供的两个最重要的方法。他们与并行性合作“并行任务的数量”。

  当forkjootask任务调用fork()方法时,引入叉子方法时,当前线程将将此任务放入队列数组的queuetop位置,然后执行以下两个代码:

  当调用SignalWork()方法时。SignalWork()方法做了两件事:1。调用前线;2.当没有活动线程或线程数很小时,请添加一个新线程。

  加入方法简介加入是一个连续等待和获得任务执行结果的过程。

  让我们看一下关节托方法

  作者:Li Haoyu Alex