/**
* 分支合并框架
*/
public static void main(String[] args) throws Exception {
MyTask myTask=new MyTask(0,100);
ForkJoinPool pool=new ForkJoinPool();//创建一个池子
ForkJoinTask<Integer> submit = pool.submit(myTask);
System.out.println(submit.get());
pool.shutdown();
}
}
class MyTask extends RecursiveTask<Integer>{
private static final Integer ADJUST_VALUE=10;
private int begin;
private int end;
private int result;
public MyTask(int begin, int end) {
this.begin = begin;
this.end = end;
}
@Override
protected Integer compute() {
if((end-begin)<=ADJUST_VALUE){
for (int i=begin;i<=end;i++){
result+=i;
}
}else {
int middle=(end+begin)/2;
MyTask task=new MyTask(begin,middle);
MyTask task1=new MyTask(middle+1,end);
task.fork();
task1.fork();
result=task.join()+task1.join();
}
return result;
}