Java并发之Fork-Join框架

2018-06-27  本文已影响0人  Herman7z

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

fork-join介绍

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

fork-join 框架的类架构图

类架构图
  1. RecursiveTask : 任务执行之后有返回值
  2. RecursiveAction : 任务执行之后没有返回值

伪代码:

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();

上一篇 下一篇

猜你喜欢

热点阅读