JAVA7 的ForkJoin框架-学习笔记

摘抄

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

//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));
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值