RecursiveTask
发布日期:2021-10-18 18:51:27 浏览次数:2 分类:技术文章

本文共 1691 字,大约阅读时间需要 5 分钟。

多线程并行计算

/** * 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
{ 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; } @Override protected 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+4 CountTask task = new CountTask(1, 100); //执行一个任务 Future
result = forkjoinPool.submit(task); try { System.out.println(result.get()); } catch (Exception e) { System.out.println(e); } }}

转载地址:https://blog.csdn.net/u011153869/article/details/54965198 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Exchanger线程拷贝
下一篇:生产者消费者模式

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月06日 15时20分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

webpack入门介绍(三) ---plugins 2019-04-26
关于 Git 的基础知识可能你还不知道 2019-04-26
mysql-基础 2019-04-26
python3-basic 2019-04-26
测试方法(1) 2019-04-26
python3-django 2019-04-26
功能测试(1) 2019-04-26
安全性测试(1) 2019-04-26
html基础 2019-04-26
vi—终端中的编辑器 2019-04-26
Linux 2019-04-26
jmeter-性能测试基础 2019-04-26
unittest 2019-04-26
错误推断法-维护中 2019-04-26
AJAX教程 2019-04-26
git基础 2019-04-26
git基础-01 2019-04-26
mysql-总结 2019-04-26
IPv4地址 2019-04-26
正则表达式 2019-04-26