java7 fork-join
来源:互联网 发布:c语言绚丽表白代码 编辑:程序博客网 时间:2024/05/01 09:34
什么是Fork/Join框架
Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架
Fork/Join使用两个类来完成以上两件事情。
①ForkJoinTask:我们要使用ForkJoin框架,必须首先创建一个ForkJoin任务。它提供在任务中执行fork()和join()操作的机制。通常情况下,我们不需要直接继承ForkJoinTask类,只需要继承它的子类,Fork/Join框架提供了以下两个子类。
·RecursiveAction:用于没有返回结果的任务。
·RecursiveTask:用于有返回结果的任务。
计算1+2+3+4的结果
import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.Future;import java.util.concurrent.RecursiveTask;public class CountTask extends RecursiveTask<Integer> { private 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(); // 等待子任务执行完,并得到其结果 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, 4); // 执行一个任务 Future<Integer> result = forkJoinPool.submit(task); try { System.out.println(result.get()); } catch (InterruptedException e) { } catch (ExecutionException e) { } }}
0 0
- Java7 FORK/JOIN框架
- java7 Fork/Join
- java7 fork-join
- java7 fork-join
- Java7:Fork-Join框架
- java7 、Fork/Join 框架原理
- java7中的fork join框架
- java7中的fork/join框架
- 分享ppt: java7里的fork-join
- java并发 java7之fork-join框架
- 使用Java7提供的Fork/Join框架
- java7并行计算框架Fork/Join
- 使用Java7提供的Fork/Join框架
- java并发(二十五)java7之fork-join框架
- Java7 Fork-Join 框架:任务切分,并行处理
- Java7 Fork-Join 框架:任务切分,并行处理
- Java7 Fork-Join 框架:任务切分,并行处理
- [笔记][Java7并发编程实战手册]5.Fork\Join(Java1.7新特性)框架
- Frament与activity生命周期对比
- Velocity 是一个基于 Java 的模板引擎
- 矩阵乘法(Strassen算法/C++实现)
- 第十九章 斐波那契堆
- innerHTML和outerHTML有什么区别
- java7 fork-join
- 【Linux】 配置vim
- JavaScript Map的实现
- 【代码质量】C++代码质量扫描主流工具深度比较
- Java反射实例及说明
- LDA 线性判别分析
- HMSegmentedControl的使用
- 经典算法面试题及答案
- Caught TypeError while rendering: coercing to Unicode: need string or buffer, NoneType found