zoukankan      html  css  js  c++  java
  • forkjoinpool

    public static void main(String[] args) {
            ForkJoinTask<Long> myForkJoinPool = new MyForkJoinPool(1L,999999999L);
    
            ForkJoinPool pool = ForkJoinPool.commonPool();
            Future<Long> future = pool.submit(myForkJoinPool); //提交分解的SumTask 任务
            try {
                System.out.println(future.get());
            }  catch (Exception e) {
                e.printStackTrace();
            }
    
    
        }
    import java.util.concurrent.RecursiveTask;
    
    /**
     * @author shiqil.liu
     * @date 2019-08-23 16:31
     */
    public class MyForkJoinPool extends RecursiveTask<Long> {
        private long start;
        private long end;
        public static final long MAX_SIZE = 10000;
    
        public MyForkJoinPool(long start, long end) {
            this.start = start;
            this.end = end;
        }
    
        public long getStart() {
            return start;
        }
    
        public void setStart(long start) {
            this.start = start;
        }
    
        public long getEnd() {
            return end;
        }
    
        public void setEnd(long end) {
            this.end = end;
        }
    
    
    
        @Override
        protected Long compute() {
            long sum = 0;
            if(end -start < MAX_SIZE) {
                for(long i=start;i<=end;i++) {
                    sum += i;
                }
                return sum;
            } else {
                long mid = (end+start) / 2 ;
                MyForkJoinPool myForkJoinPool1 = new MyForkJoinPool(start, mid);
                MyForkJoinPool myForkJoinPool2 = new MyForkJoinPool(mid+1, end);
                //invokeAll(myForkJoinPool1,myForkJoinPool1);
                myForkJoinPool1.fork();
                myForkJoinPool2.fork();
                return myForkJoinPool1.join()+myForkJoinPool2.join();
            }
    
        }
    
    
    }
  • 相关阅读:
    CriminalIntent项目开发笔记(二)
    CriminalIntent项目开发笔记(一)----动态添加Fragment
    android应用中去掉标题栏的方法
    15个IT程序员必须思考的问题
    Android Studio快捷键
    Android 学习笔记
    win7系统安装方法
    jquery随学随记
    接口功能测试策略--转载
    测试随笔
  • 原文地址:https://www.cnblogs.com/TheQi/p/11401475.html
Copyright © 2011-2022 走看看