zoukankan      html  css  js  c++  java
  • fork/join 中的RecursiveTask与RecursiveAction用法

    什么是Fork/Join框架  (是一种思想)

            Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。

    当数据不多的时候,使用单线程更快一点 (一心一意做一件事情)   数据不多的时候,使用fork/join会变慢,因为数据还要进行拆分,再进行多线程执行。

    工作窃取算法

             工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行。工作窃取的运行(通俗一点的来说就是,自己这一队的事情干完了,我去把其他列队的事情拿来做

    ForkJoinPool

            Java提供了ForkJoinPool来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合成总的计算结果。

            ForkJoinPool是ExecutorService的实现类,因此是一种特殊的线程池。ForkJoinPool提供了如下两个常用的构造器。

     public ForkJoinPool(int parallelism):创建一个包含parallelism个并行线程的ForkJoinPool
     public ForkJoinPool() :以Runtime.getRuntime().availableProcessors()的返回值作为parallelism来创建ForkJoinPool

    创建ForkJoinPool实例后,可以钓鱼ForkJoinPool的submit(ForkJoinTask<T> task)或者invoke(ForkJoinTask<T> task)来执行指定任务。其中ForkJoinTask代表一个可以并行、合并的任务。ForkJoinTask是一个抽象类,它有两个抽象子类:RecursiveAction和RecursiveTask。

    RecursiveTask代表有返回值的任务
    RecursiveAction代表没有返回值的任务。

  • 相关阅读:
    设计模式 创建型 抽象工厂
    mysql 案例 ~ 分析执行完的大事务
    mysql 查询优化案例汇总
    mysql 原理 ~ innodb恢复机制
    mysql 原理~ 乐观锁和悲观锁
    mysql 原理 ~ 常规锁
    mysql 5.7 ~ 新特性
    mysql 原理 ~ checkpoint
    mysql原理~undo管理
    mysql原理~undo
  • 原文地址:https://www.cnblogs.com/1306962984wei/p/13082811.html
Copyright © 2011-2022 走看看