以下为一个见到的java中的并发框架例子:采用的fork/join 机制,采用分治的思想来求1-12000的和
代码如下:
package com.bootdo.testDemo.rpc;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future;
import java.util.concurrent.RecursiveTask;
public class ForkJoinTest {
static class Sum extends RecursiveTask<Long>{
private static final int THRESHOLD=10;
private final int from;
private final int to;
public Sum(int from,int to){
this.from=from;
this.to=to;
}
@Override
protected Long compute() {
long sum=0;
if((to-from)<THRESHOLD){
for(int i=from;i<=to;i++){
sum+=i;
}
}else{
int middle=(from+to)>>1;
Sum left=new Sum(from,middle);
left.fork();
Sum right=new Sum(middle,to);
right.fork();
sum=left.join()+right.join();
}
return sum;
}
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
ForkJoinPool forkJoinPool=new ForkJoinPool();
Sum sum=new Sum(1,12000);
Future<Long> future=forkJoinPool.submit(sum);
System.out.println("sum="+future.get());
}
}