博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发执行任务
阅读量:6370 次
发布时间:2019-06-23

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

并发执行任务

 

1 import java.util.concurrent.ExecutionException; 2 import java.util.concurrent.ForkJoinPool; 3 import java.util.concurrent.ForkJoinTask; 4 import java.util.concurrent.RecursiveTask; 5  6 /** 7  *    并发执行任务 8  */ 9 public class CountTask extends RecursiveTask
{10 11 private static final long serialVersionUID = 1L;12 private static final int THRESHOLD = 2; //阈值13 private int start;14 private int end;15 16 public CountTask(int start,int end) {17 this.start = start;18 this.end = end;19 }20 21 @Override22 protected Integer compute() {23 int sum = 0;24 //如果任务足够小就计算任务25 boolean canCompute = (end - start) <= THRESHOLD;26 if(canCompute) {27 for (int i = start; i <= end; i++) {28 sum += i;29 }30 }else {31 //如果任务大于阈值 就分裂成两个子任务计算32 int middle = (start + end) / 2;33 CountTask leftTask = new CountTask(start, middle);34 CountTask rightTask = new CountTask(middle + 1, end);35 leftTask.fork();36 rightTask.fork();37 //等待子任务执行完成 并得到其结果38 int leftResult = leftTask.join();39 int rightResult = rightTask.join();40 //合并子任务41 sum = leftResult + rightResult;42 }43 return sum;44 }45 46 public static void main(String[] args) {47 ForkJoinPool forkJoinPool = new ForkJoinPool();48 //生成一个计算任务,负责计算1+2+3+449 CountTask task = new CountTask(1,4);50 //执行一个任务51 ForkJoinTask
result = forkJoinPool.submit(task);52 try {53 System.out.println(result.get());54 } catch (InterruptedException e) {55 e.printStackTrace();56 } catch (ExecutionException e) {57 e.printStackTrace();58 }59 }60 }

 

转载于:https://www.cnblogs.com/wang1001/p/9603308.html

你可能感兴趣的文章
详解Java中staitc关键字
查看>>
前中情局局长:FBI目的是从根本上改善iPhone
查看>>
大隐隐于市,你身边的那些安全隐患你都知道么?
查看>>
物联网市场迅猛发展 “中国芯”如何把握机会?
查看>>
aws 上使用elb 的多域名问题
查看>>
环球花木网的目标就是致力于打造成为“园林相关行业的专业性门户网站
查看>>
《编写高质量代码:改善c程序代码的125个建议》—— 建议14-1:尽量避免对未知的有符号数执行位操作...
查看>>
《C语言编程魔法书:基于C11标准》——2.2 整数在计算机中的表示
查看>>
全球程序员编程水平排行榜TOP50,中国排名第一
查看>>
HDFS 进化,Hadoop 即将拥抱对象存储?
查看>>
Edge 浏览器奇葩 bug:“123456”打印成“114447”
查看>>
Sirius —— 开源版的 Siri ,由 Google 支持
查看>>
《OpenGL ES应用开发实践指南:Android卷》—— 2.7 小结
查看>>
《Windows Server 2012活动目录管理实践》——第 2 章 部署第一台域控制器2.1 案例任务...
查看>>
Java Date Time 教程-时间测量
查看>>
Selector.wakeup实现注记
查看>>
《Java EE 7精粹》—— 第1章 Java EE 1.1 简介
查看>>
《Exchange Server 2013 SP1管理实践》——导读
查看>>
syslog:类Unix系统常用的log服务
查看>>
使用Annotation设计持久层
查看>>