Java并发ForkJoin

一.简介

并发编程可以分为三个层面的问题,分别是分工、协作和互斥,用类比现实世界的一些情况去理解并发任务,可以把线程池、Future、CompletableFuture 和 CompletionService 都列到了分工里面。

还有一种“分治”的任务模型,指的是把一个复杂的问题分解成多个相似的子问题,然后再把子问题分解成更小的子问题,直到子问题简单到可以直接求解。

分治思想在很多领域都有广泛的应用,例如算法领域有分治算法(归并排序、快速排序都属于分治算法,二分法查找也是一种分治算法);大数据领域知名的计算框架 MapReduce 背后的思想也是分治。既然分治这种任务模型如此普遍,那 Java 显然也需要支持,Java 并发包里提供了一种叫做 Fork/Join 的并行计算框架,就是用来支持分治这种任务模型的。

二.Fork/Join

2.1 分治任务模型

分治任务模型可分为两个阶段:一个阶段是任务分解&

posted @ 2021-02-25 17:53  Dlimeng  阅读(17)  评论(0)    收藏  举报  来源