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代表没有返回值的任务。

  • 相关阅读:
    事务创建函数
    实现Xshell断开连接情况下Linux命令继续执行
    MySQL UNION 操作符
    CentOS安装部署Mysql 5.7
    连接数据库
    @Results用法总结
    在Java中如何高效的判断数组中是否包含某个元素
    Java中的map集合顺序如何与添加顺序一样
    instanceof的用法
    枚举
  • 原文地址:https://www.cnblogs.com/1306962984wei/p/13082811.html
Copyright © 2011-2022 走看看