import java.util.concurrent.RecursiveTask;
public class MyTask extends RecursiveTask<Integer> {
//定义拆分差值
private static final Integer 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)<=VALUE) {
// 计算
for (int i=begin;i<=end;i++){
result=result+i;
}
}else{
int middle=(begin+end)/2;
MyTask m1=new MyTask(begin,middle);
MyTask m2=new MyTask(middle+1,end);
m1.fork();
m2.fork();
result=m1.join()+m2.join();
}
return result;
}
}