多线程并行计算

/*** Created by yuanyong on 17/2/8.*/import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future;
import java.util.concurrent.RecursiveTask;public class CountTask extends RecursiveTask<Integer> {private static final long serialVersionUID = -3611254198265061729L;public static final int threshold = 2;private int start;private int end;public CountTask(int start, int end) {this.start = start;this.end = end;}@Overrideprotected Integer compute() {int sum = 0;//如果任务足够小就计算任务boolean canCompute = (end - start) <= threshold;if (canCompute) {for (int i = start; i <= end; i++) {sum += i;}} else {// 如果任务大于阈值,就分裂成两个子任务计算int middle = (start + end) / 2;CountTask leftTask = new CountTask(start, middle);CountTask rightTask = new CountTask(middle + 1, end);// 执行子任务leftTask.fork();rightTask.fork();System.out.println(Thread.currentThread().getName());//等待任务执行结束合并其结果int leftResult = leftTask.join();int rightResult = rightTask.join();//合并子任务sum = leftResult + rightResult;}return sum;}public static void main(String[] args) {ForkJoinPool forkjoinPool = new ForkJoinPool();//生成一个计算任务,计算1+2+3+4CountTask task = new CountTask(1, 100);//执行一个任务Future<Integer> result = forkjoinPool.submit(task);try {System.out.println(result.get());} catch (Exception e) {System.out.println(e);}}}

RecursiveTask相关推荐

  1. RecursiveTask和RecursiveAction的使用 以及java 8 并行流和顺序流

    转载自 https://blog.csdn.net/weixin_41404773/article/details/80733324 什么是Fork/Join框架         Fork/Join框 ...

  2. Fork\Join分而治之--RecursiveTask和RecursiveAction(一)

    fork/join 分而治之 1.什么是Fork/join框架? 从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务.它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的 ...

  3. 面试高频——JUC并发工具包快速上手(超详细总结)

    目录 一.什么是JUC 二.基本知识 2.1.进程和线程 2.2.Java默认有两个进程 2.3.Java能够开启线程吗? 2.4.并发和并行 2.5.线程的状态 2.6.wait和sleep的区别 ...

  4. Java fork join ForkJoinPool 用法例子

    本例是把一个大的数组求和的计算的大任务分解到在小范围内求和的小任务,然后把这些小任务之和加起来就是所求之结果. 技术:JDK8.0, Java fork-join模式下的RecursiveTask技术 ...

  5. java多线程工具类_Java多线程系列之:线程的并发工具类

    一,Fork-Join 1,定义: Fork-Join框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不能再拆时),再将一个个的小任务运算的结果进行join汇总. 2, ...

  6. java fork join原理_细说Fork/Join框架

    什么是Fork/Join框架? Fork/Join框架是JDK1.7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干小任务,最终汇总每个小任务结果后得到大任务结果的框架.Fork就是把一个大 ...

  7. Oracle官方教程之Fork/Join

    原文链接,译文链接,译者:Zach,校对:郑旭东 fork/join框架是ExecutorService接口的一种具体实现,目的是为了帮助你更好地利用多处理器带来的好处.它是为那些能够被递归地拆解成子 ...

  8. Java高并发之设计模式,设计思想

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:大道方圆 cnblogs.com/xdecode/p/913 ...

  9. fork/join 全面剖析,你可以不用,但是不能不懂!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:浮云骑士LIN cnblogs.com/linlinismi ...

最新文章

  1. 微服务追踪系统,你绝对想不到!
  2. ESP8266中char数据类型注意事项
  3. hdu-2066(Dijkstra)
  4. PHP获取POST数据的几种方法汇总
  5. CORS 跨域-同源策略
  6. IOS15全屏滑动返回
  7. .net core连接MongoDB
  8. ntlm java_深讨Java SE 6 在 HTTP 方面的新特性(NTLM)
  9. 再次详解clientHeight、offsetHeight、scrollHeight
  10. 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一2.6 小结
  11. 16 张图解带你掌握一致性哈希算法
  12. 从零开始学Pytorch(零)之安装Pytorch
  13. Yearn已部署新YFI策略Brownie Mix
  14. keepalived+LVS 详解(3) -- VRRP协议简介
  15. 【图像融合】基于matlab CBF算法图像融合【含Matlab源码 083期】
  16. python第五篇:Linux上将txt导入mysql
  17. Codeblocks中的empty project和console application
  18. EasyUI管理后台模板(附源码)
  19. python numpy log_工具amp;方法 | 6行代码教你用Python做OLS回归(内附CFPS实例)
  20. 图测1.0 在线地图测量与高清卫星图App 发布

热门文章

  1. 基于python的transform行人车辆识别
  2. 获取微信小程序源码并进行反编译
  3. Linux开机关闭防火墙端口
  4. 关于对信管专业的理解与若干建议
  5. android q wifi,Android Q 10连接到网络wifinetworksspecifier
  6. GAOKU-WMS智能仓储管理系统
  7. AndroidStudio 快捷键格式化代码
  8. 基于Android安卓医院挂号预约系统软件app
  9. 2004.09.15,Wed - 打印机和上网?
  10. ESP32设置AP模式与手机连接,并向手机发送数据