ForkJoin 框架 4年前

代码工具
142
ForkJoin 框架
package com.wkx.test.forkJoin.containValue;

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

public class CountTask extends RecursiveTask<Integer>{

    public static final int threshold = 2;
    private int start;
    private int end;

    public CountTask(int start, int end)
    {
        this.start = start;
        this.end = end;
    }

    @Override
    protected Integer compute() {
        int sum=0;
        boolean canCompute=(end-start)<=threshold;
        if(canCompute){
            for(int i=start;i<=end;i++){
                sum=sum+i;
            }
        }else{
            int middle=(end-start)/2;
            CountTask countTask1=new CountTask(start,middle);
            CountTask countTask2=new CountTask(middle+1,end);
            countTask1.fork();
            countTask2.fork();
            sum=countTask1.join()+countTask2.join();
        }
        return sum;
    }

    public static void main(String args[]) throws ExecutionException, InterruptedException {
        ForkJoinPool joinPool=new ForkJoinPool();
        CountTask countTask=new CountTask(0,3);
        Future<Integer> result=joinPool.submit(countTask);
        System.out.println(result.get());
    }

}
伊叔的天然卷腿毛
然则天下之事,但知其一,不知其二者多矣,可据理臆断欤?
2
发布数
1
关注者
254
累计阅读

热门教程文档

MySQL
34小节
Typescript
31小节
Docker
62小节
Spring Cloud
8小节
Dart
35小节
广告