您的位置:首页 > 编程语言 > Java开发

JAVA7 的ForkJoin框架-学习笔记

2015-12-13 15:51 645 查看
摘抄

//使用双端队列 用来 实现 窃取算法,

//1. 继承RecursiveAction/RecursiveTask 实现相应的compute方法

//RecursiveAction:用于无返回结果的任务。实现 void compute()

//RecursiveTask : 有结果。实现<T>compute()

//2. ForkJoinPool 执行任务

//实现 1~1000 的和
public class MyTask extends RecursiveTask<Integer>{
private static final int NUM = 10;  //超过两个就分割
private int start;
private int end;

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

protected Integer compute() {
int sum = 0;
if( end - start < NUM)
for(int i =start; i<=end; ++i)
sum += i;
else {
int mid = (start + end)/2;
// 分解任务
MyTask leftTask= new MyTask ();
MyTask rightTask = new MyTask ();

//小任务执行 task.fork()
leftTask.fork();
rightTask .fork();

//拿到子任务结果 task.join()
sum = leftTask.join() + rightTask .join();
}

return sum;
}

public static void main(String[] args) {
//提交任务到ForkJoin框架
new ForkJoinPool().invoke(new MyTask(1,1000));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: