java forkjoin

项目中用到了forkjoin ,找到一篇不错的文档,学习下

当硬件处理能力不能按照摩尔定律垂直发展的时候,选择了水平发展,多核处理器已经广泛应用。未来随着技术的进一步发展,可能出现成百上千个处理核心,但现有的程序运行在多核心处理器上并不能得到较大性能的提升,主要的瓶颈在于程序本身的并发处理能力不强,不能够合理的利用多核心资源。
 
现有的处理方案是从软件入手,试图采用多线程,是程序在同一时间支持多个任务的计算,这种多线程的处理方案在处理器数目较少的情况下可以较为明显的提高应用性能,但我们更加青睐于由硬件实现的多线程处理模式,但这一领域至今没有很好的结果。

ForkJoin是Java7提供的原生多线程并行处理框架,其基本思想是将大人物分割成小任务,最后将小任务聚合起来得到结果。它非常类似于HADOOP提供的MapReduce框架,只是MapReduce的任务可以针对集群内的所有计算节点,可以充分利用集群的能力完成计算任务。ForkJoin更加类似于单机版的MapReduce。FORKJOIN是针对具有明显可以进行任务分割特性需求的实现

Fork / Join的逻辑很简单:

(1)将每个大任务分离(fork)为较小的任务; 
(2)在单独的线程中处理每个任务(如果必要,将它们分离成更小的任务); 
(3)加入结果

 https://www.jianshu.com/p/bd825cb89e00

 https://www.cnblogs.com/lixuwu/p/7979480.html

转自 http://www.importnew.com/14506.html

猜你喜欢

转载自www.cnblogs.com/zecdllg/p/9647500.html