美文网首页
Java并发之Fork-Join框架

Java并发之Fork-Join框架

作者: Herman7z | 来源:发表于2018-06-27 10:02 被阅读0次

    事例项目:https://gitee.com/silentwu/java-concurrency-tutorial

    fork-join介绍

    Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join框架要完成两件事情:

    • 任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割
    • 执行任务并合并结果:分别对分割的子任务进行处理,然后再对所有子任务的结果进行合并。

    fork-join 框架的类架构图

    类架构图
    • ForkJoinTask : 在使用的时候,我们首先需要创建一个ForkJoinTask,一般不需要继承这个类,java 已提供了两个类,只需要继承他们
    1. RecursiveTask : 任务执行之后有返回值
    2. RecursiveAction : 任务执行之后没有返回值
    • ForkJoinPool : 调用ForkJoinTask

    伪代码:

    class Worker extend RecursiveTask<xxxx>{
            @Override
            protected xxx compute() {
                if (是否满足条件) {
                 return  executeWorker(); //执行任务 ,返回执行结果
                }
                //不满足条件那么就分割
                Worker worker1= new Worker();
                Worker worker2= new Worker();
                invokeAll(worker1, worker2);  //调用两个worker, 如果不满足条件内部又会继续分割
                return worker1.join() + worker2.join();
            }
    }
    
    ForkJoinPool pool = new ForkJoinPool();
    pool.invoke(new Worker());
    
    
    pool.shutdown();
    
    

    相关文章

      网友评论

          本文标题:Java并发之Fork-Join框架

          本文链接:https://www.haomeiwen.com/subject/vqlyyftx.html