JUC_ForkJoin分支合併框架

ForkJoinPool

在這裏插入圖片描述

ForkJoinTask

在這裏插入圖片描述

RecursiveTask

在這裏插入圖片描述

demo-fibonacci

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;

public class FibonacciDemo extends RecursiveTask<Integer> {

    private int num;

    public FibonacciDemo(int num) {
        this.num = num;
    }

    /**
     * The main computation performed by this task.
     *
     * @return the result of the computation
     */
    @Override
    protected Integer compute() {
        if(num<=2){
            return 1;
        }
        FibonacciDemo fibonacciDemo=new FibonacciDemo(num-1);
        FibonacciDemo fibonacciDemo2=new FibonacciDemo(num-2);
        fibonacciDemo.fork();
        fibonacciDemo2.fork();

        return fibonacciDemo.join()+fibonacciDemo2.join();
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ForkJoinPool forkJoinPool=new ForkJoinPool();
        FibonacciDemo fibonacciDemo=new FibonacciDemo(5);
        ForkJoinTask<Integer> forkJoinTask=forkJoinPool.submit(fibonacciDemo);
        System.out.println(forkJoinTask.get());
        forkJoinPool.shutdown();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章