4.1 Fork/Join框架概述

来源:互联网 发布:简单的平面设计软件 编辑:程序博客网 时间:2024/06/05 15:54

Fork/Join框架概述

概述

Java7引入了一种新的并行框架:Fork/Join框架。Fork/Join框架是用来解决能够通过分治技术(Divide and Conquer Technique)将问题拆分成小任务的问题。在一个任务中,先检查将要解决的问题大小,如果大于一个设定的大小,那就将问题拆分成可以通过框架来执行的小任务,如果问题的大小比设定的大小要小,就可以直接在任务里解决这个问题,然后根据需要返回任务的结果。


Fork/Join框架和Executor框架主要的区别在于工作窃取算法(Work-Stealing Algorithm)。Fork/Join框架使用join操作让一个主任务等待它所创建的子任务的完成,执行这个任务的线程称之为工作者线程(Worker Thread)。工作者线程会寻找仍未被执行的任务然后开始执行。


Fork/Join框架基于以下两种操作:

  • 分解(Fork)操作,当需要将任务拆分成更小的多个任务,并在框架中执行这些任务。
  • 合并(Join)操作,当一个主任务等待其创建的多个子任务完成执行。


Fork/Join框架的核心是由下列两个类组成的:

  • ForkJoinPool:这个类实现了ExecutorService接口和工作窃取器算法。它管理工作者线程,并提供任务的状态信息,以及任务的执行信息。
  • ForkJoinTask:这个类是一个将在ForkJoinPool中执行的任务的基类

Fork/Join框架提供了在一个任务里执行fork和join操作的机制和控制任务状态的方法。通常,为了实现Fork/Join任务,需要实现一个以下两个类之一的子类:

  • RecursiveActin:用于任务没有返回结果的场景
  • RecursiveTask:用于任务有返回结果的场景


0 0
原创粉丝点击