1package com.wkx.test.forkJoin.containValue; 2 3import java.util.concurrent.ExecutionException; 4import java.util.concurrent.ForkJoinPool; 5import java.util.concurrent.Future; 6import java.util.concurrent.RecursiveTask; 7 8public class CountTask extends RecursiveTask<Integer>{ 9 10 public static final int threshold = 2; 11 private int start; 12 private int end; 13 14 public CountTask(int start, int end) 15 { 16 this.start = start; 17 this.end = end; 18 } 19 20 @Override 21 protected Integer compute() { 22 int sum=0; 23 boolean canCompute=(end-start)<=threshold; 24 if(canCompute){ 25 for(int i=start;i<=end;i++){ 26 sum=sum+i; 27 } 28 }else{ 29 int middle=(end-start)/2; 30 CountTask countTask1=new CountTask(start,middle); 31 CountTask countTask2=new CountTask(middle+1,end); 32 countTask1.fork(); 33 countTask2.fork(); 34 sum=countTask1.join()+countTask2.join(); 35 } 36 return sum; 37 } 38 39 public static void main(String args[]) throws ExecutionException, InterruptedException { 40 ForkJoinPool joinPool=new ForkJoinPool(); 41 CountTask countTask=new CountTask(0,3); 42 Future<Integer> result=joinPool.submit(countTask); 43 System.out.println(result.get()); 44 } 45 46}
ForkJoin 框架
Stella981
2021-10-11
1135 0 0
点赞
收藏
评论区
加载中...