多线程并行计算

/*** 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. linux 更改ctime_linux常用命令
  3. 咖友推荐|我是窝窝酱,我来了,你在哪儿?
  4. Linux基础常用运维操作
  5. IO对象不可以复制或者赋值
  6. 使用ST05 研究product extension field deletion
  7. php imap模块的添加
  8. Android 用户界面---样式和主题(Styles and Themes)(二)
  9. TCP详解——连接建立与断开
  10. c语言文件.ppt,c语言 文件.ppt
  11. BIND9源码分析奠基
  12. 楼层平面放线及标高实测记录_建筑平面图怎么看?教你这样看图,新手也能秒懂...
  13. Python 之 新手安装详解 、安装目录说明 及 修改 pip 默认包安装位置
  14. 《转》微商48种加人方法
  15. 「00后缩写黑话翻译器」登上GitHub热榜,中年网民终于能看懂年轻人的awsl
  16. Android关于对话框,Android对话框(Dialog)完全使用手册
  17. 全概率公式和贝叶斯公式(转载)
  18. Python 玩出花儿了!一文教你用 Python 制作吃豆人游戏! | 附代码
  19. python分析:中国五大城市PM2.5数据分析
  20. 【原创】高精度好题 Heaven Cow与God Bull

热门文章

  1. java 前端和后端_java编程语言是前端还是后端
  2. 装完nvme固态经常蓝屏_M.2家用固态硬盘怎么选?三款主流NVMe横评给你明确答案...
  3. 打印机扫描显示服务器错误代码,打印机操作无法完成错误代码0x00000015的解决办法...
  4. 阿里云人脸比对API封装
  5. acm-(推式子、好题、数学、排列计数)2020ICPC·小米 网络选拔赛第一场 H.Grouping
  6. 《团队-排课软件-项目进度》
  7. csdn资源下载后评论 验证码错误,什么鬼?
  8. java如何判断鼠标双击_Swing中如何比较好的判断鼠标左键双击
  9. OSChina 周一乱弹 —— 薯哥儿,你约吗?
  10. 基于STM32的ICL7135数字电压表的设计