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

教您使用Java7的叉 /加入框架来开发高并发程序

时间:2023-03-06 01:34:47 网络应用技术

  位于J.U.C(Java.util.concurrent)中,是Java7为执行并行任务提供的框架。它可以将大型任务分为几个小任务。总结每个小任务结果的最终结果。基本思想类似于Hadoop的MapReduce思想。

  主要使用窃取算法的工作(某个线程从其他队列偷走了任务),并在平行分区计算中进行工作阶段策略

  如果我们需要执行相对较大的任务,我们可以将此任务分为几个非依赖性子任务。为了减少线程之间的竞争,这些子任务被放入不同的队列中,对于每个queuecreate,一个单独的线程以在队列中执行任务。线程和队列对应于一个-to -One对应。其他线程,因此将其窃取其他线程的队列以窃取任务以执行。通常使用末端队列。窃取任务的线程将始终从两个末端队列的尾部执行任务。

  充分利用线程进行并行计算并减少线程之间的竞争

  在某些情况下,仍然存在竞争,例如两个末端队列中的一项任务。该算法会消耗更多的系统资源,例如创建多个线程和多个两个末端队列。

  对于叉/联接框架,当任务正在等待子任务使用联接操作创建时,执行此任务的工作线程是找到其他难忘的任务并启动这些难忘的任务。为了实现这一目标,叉子/联接框架的任务有一些限制,如下所示,他们的运行时间以提高应用程序的性能。

  叉/联接框架的核心是两个类别:forkjoinpool和forkjointask.forkjoinpool负责实现窃取算法,管理工作线程,任务状态和执行信息的工作。。

  示例代码如下:

  本文分享了华为的真诚云社区,作者:宾赫。