JavaForkJoin框架的原理及用法-创新互联

这篇文章主要介绍了Java ForkJoin框架的原理及用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

南岔ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

ForkJoin分析

一、ForkJoin

ForkJoin是由JDK1.7后提供多线并发处理框架。ForkJoin的框架的基本思想是分而治之。什么是分而治之?分而治之就是将一个复杂的计算,按照设定的阈值进行分解成多个计算,然后将各个计算结果进行汇总。相应的ForkJoin将复杂的计算当做一个任务。而分解的多个计算则是当做一个子任务。

Java ForkJoin框架的原理及用法

二、ForkJoin的使用

下面我们以计算一个长度为一个亿的随机数整数数组为例来展示一下ForkJoin的使用:

1.创建Task

​ 使用ForkJoin框架,需要创建一个ForkJoin的任务,而ForkJoinTask是一个抽象类,我们不需要去继承ForkJoinTask进行使用。因为ForkJoin框架为我们提供了RecursiveAction和RecursiveTask(子任务有返回值)。我们只需要继承ForkJoin为我们提供的抽象类的其中一个并且实现compute方法。

private static class SumTask extends RecursiveTask{

  //设定计算长度的阈值为总长度的十分之一也就是一千万
  private final static int THRESHOLD = MakeArray.ARRAY_LENGTH/10;
  private int[] src; //表示我们要实际统计的数组
  private int fromIndex;//开始统计的下标
  private int toIndex;//统计到哪里结束的下标

  public SumTask(int[] src, int fromIndex, int toIndex) {
    this.src = src;
    this.fromIndex = fromIndex;
    this.toIndex = toIndex;
  }

  @Override
  protected Integer compute() {
    //计算长度如果小于设定长度就不需要分解任务
    if(toIndex-fromIndex < THRESHOLD) {
      int count = 0;
      for(int i=fromIndex;i<=toIndex;i++) {
        count = count + src[i];
      }
      return count;
    }else {
      int mid = (fromIndex+toIndex)/2;
      SumTask left = new SumTask(src,fromIndex,mid);
      SumTask right = new SumTask(src,mid+1,toIndex);
      //将任务进行拆分
      invokeAll(left,right);
      //连接返回结果
      return left.join()+right.join();
    }
  }
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站题目:JavaForkJoin框架的原理及用法-创新互联
分享链接:http://bzwzjz.com/article/cchsjp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设公司 手机网站制作 网站制作公司 重庆网站建设 自适应网站设计 成都网站建设 网站制作报价 定制网站制作 网站建设公司 上市集团网站建设 宜宾网站设计 成都网站制作 成都网站建设 专业网站建设 重庆手机网站建设 重庆企业网站建设 网站设计 高端定制网站设计 成都营销网站建设 营销型网站建设 营销网站建设 成都网站建设