Fork/Join分支合并框架

2022年11月6日11:29:15

Fork/Join分支合并框架

在必要的情况下,将一个大任务拆分成多个小任务(不可再拆分),然后将小任务的计算结果进行汇总。

工作窃取模式

当一个线程上获取不到任务的时候,它将会到其他线程的尾部去截取一个任务来执行。

publicclassThreadTest{publicstaticvoidmain(String[] args){
        ForkJoinPool pool=newForkJoinPool();

        ForkJoinTask<Long> task=newForkJoinDemo(0L,100000000L);

        Long sum= pool.invoke(task);

        System.out.println(sum);}}classForkJoinDemoextendsRecursiveTask<Long>{privatestaticfinallong serivalVersionUID=-5235345621564052455L;privatelong start;privatelong end;privatestaticfinallong THURSHOLD=10000L;//临界值publicForkJoinDemo(long start,long end){this.start= start;this.end= end;}@Overrideprotected Longcompute(){long length= end- start;if(length<=THURSHOLD){long sum=0L;for(long i=start;i< end;i++){
                sum+=i;}return sum;}else{long middle=(start+ end)/2;
            ForkJoinDemo left=newForkJoinDemo(start,middle);
            left.fork();//进行拆分,压入队列
            ForkJoinDemo right=newForkJoinDemo(middle+1,end);
            right.fork();return left.join()+ right.join();}}}
  • 作者:takeuheart
  • 原文链接:https://blog.csdn.net/takeuherat/article/details/102653385
    更新时间:2022年11月6日11:29:15 ,共 881 字。