Java併發程式設計(07):Fork/Join框架機制詳解
阿新 • • 發佈:2020-08-16
本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/java-base-parent) || [GitEE·點這裡](https://gitee.com/cicadasmile/java-base-parent)
# 一、Fork/Join框架
Java提供Fork/Join框架用於並行執行任務,核心的思想就是將一個大任務切分成多個小任務,然後彙總每個小任務的執行結果得到這個大任務的最終結果。
這種機制策略在分散式資料庫中非常常見,資料分佈在不同的資料庫的副本中,在執行查詢時,每個服務都要跑查詢任務,最後在一個服務上做資料合併,或者提供一箇中間引擎層,用來彙總資料:
![](https://img2020.cnblogs.com/blog/1691717/202008/1691717-20200816143833166-2054158430.png)
核心流程:切分任務,模組任務非同步執行,單任務結果合併;在程式設計裡面,通用的程式碼不多,但是通用的思想卻隨處可見。
# 二、核心API和方法
## 1、編碼案例
基於1+2..+100的計算案例演示Fork/Join框架基礎用法。
```java
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;
public class ForkJoin01 {
public static void main (String[] args) {
int[] numArr = new int[100];
for (int i = 0; i < 100; i++) {
numArr[i] = i + 1;
}
ForkJoinPool pool = new ForkJoinPool();
Fork