`
fanger0914
  • 浏览: 1218 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

学习java7的fork/join

阅读更多
在网上看到一个列子,顺便敲了一边,练练手

* ForkJoinPool是一个Excutor的子类
* ForkJoinTask:我们要使用ForkJoin框架,必须首先创建一个ForkJoin任务。它提供在任务中执行fork()和join()操作的机制,通常情况下我们不需要直接继承ForkJoinTask类,而只需要继承它的子类,Fork/Join框架提供了以下两个子类:
RecursiveAction:用于没有返回结果的任务。
RecursiveTask :用于有返回结果的任务。

class CountTask extends RecursiveTask<Integer>{
    private int THRESHOLD = 2;
    private int start ;
    private int end;

    CountTask(int start,int end){
        this.start = start;
        this.end = end;
    }

    @Override
    protected Integer compute() {
        int sum = 0;
        boolean canFork = end-start>THRESHOLD;
        if(!canFork){
            for(int i=start;i<=end;i++){
                sum += i;
            }
        }else{
            int middle = (end-start)/2;
            CountTask task1 = new CountTask(start,middle);
            CountTask task2 = new CountTask(middle+1,end);
            task1.fork();
            task2.fork();
            sum = task1.join() + task1.join();
            /**
             * getException方法返回Throwable对象,
             * 如果任务被取消了则返回CancellationException。
             * 如果任务没有完成或者没有抛出异常则返回null
             */
            if(task1.isCompletedAbnormally())
            {
                System.out.println(task1.getException());
            }
            if(task2.isCompletedAbnormally())
            {
                System.out.println(task2.getException());
            }
        }
        return sum;
    }

    public static void main(String[] args){
        CountTask task = new CountTask(1,10000);
        ForkJoinPool pool = new ForkJoinPool();
        Future<Integer> sum = pool.submit(task);
        println(sum.get());
    }
}
分享到:
评论

相关推荐

    Fork/Join例子

    在Java编程领域,Fork/Join框架是一种并行计算模型,设计用于高效处理大量数据,尤其是在多核处理器系统上。这个框架是Java 7引入的一个重要特性,它基于分而治之(Divide and Conquer)策略,将复杂任务拆分为更小...

    java Fork Join框架及使用

    Fork/Join框架是Java7引入的一种用于并行任务执行的框架,它允许将复杂任务拆分成多个子任务,并行执行,然后通过join操作将结果聚合。Fork/Join框架特别适合处理可以递归拆分的计算密集型任务,比如大数据集的搜索...

    fork/join 实例

    这个框架是Java 7引入的,位于`java.util.concurrent.fork/join`包中,目的是简化多核处理器环境下大规模数据处理的编程模型。 **Fork/Join框架的核心组件** 1. **ForkJoinPool**: ForkJoinPool是线程池,它执行...

    java NIO用法及java fork/join 用法源码工程

    现在转向Java的Fork/Join框架,它是Java 7引入的一个并行计算模型,基于分而治之的策略。Fork/Join框架主要由以下几个关键组件组成: 1. **ForkJoinPool**:这是执行ForkJoinTask的线程池。它不同于普通的...

    Java并发Fork and join

    Fork/Join框架是Java并发库中的一部分,自Java 7开始引入,它为开发者提供了一种高效的处理大规模计算任务的方法。这个框架基于分治策略,将大任务分解成若干小任务,然后并行执行这些小任务,最后再将结果合并。...

    Java中的Fork,Join框架深度解析

    Java的Fork/Join框架是一种用于并行计算的框架,它基于分治法的原理,将大任务分解成小任务并行执行,最后再将结果合并。这种框架特别适合于可以分解为多个子任务且子任务可以并行处理的场景。本文将详细介绍Fork/...

    Fork/Join框架Package jsr166y

    Fork/Join框架Package jsr166y是Java 7并行编程类的的初步版本(Preliminary versions of classes targeted for Java 7.)

    Java中的Fork/Join框架

    看了下Java Tutorials中的fork/join章节,整理下。  什么是fork/join框架  fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的...

    Java通过Fork/Join优化并行计算

    Java的Fork/Join框架是Java 7引入的一个并行计算工具,它是基于分而治之(Divide and Conquer)策略的。该框架旨在简化并行编程,尤其是在多核处理器环境中提高性能。Fork/Join框架的核心类包括`ForkJoinPool`和`...

    译文:Fork and Join: Java Can Excel at Painless Parallel Programming Too!

    本文将简要回顾Java中的并发编程基础知识,介绍java.util.concurrent包提供的高级并发原语,并深入探讨Fork/Join框架及其在Java SE 7中的应用。 首先,让我们回顾一下Java中基本的并发机制。自Java早期版本起,线程...

    浅谈Java Fork/Join并行框架

    Java Fork/Join 并行框架是 Java 7 中引入的一个并行任务框架,可以将任务分割成足够小的小任务,然后让不同的线程来做这些分割出来的小事情,然后完成之后再进行 join,将小任务的结果组装成大任务的结果。...

    java8中forkjoin和optional框架使用

    Fork/Join 框架是 Java 7 中引入的一种新的并发编程模型,它可以将一个大任务拆分成多个小任务,并将这些小任务分配给多个线程来执行,然后将这些小任务的结果合并起来,形成最终的结果。 Fork/Join 框架的优点是...

    Java Fork/Join框架

    Java Fork/Join框架是Java 7引入的一种并行计算模型,设计目的是为了高效地处理大量数据,尤其是在多核处理器环境中。该框架的核心理念是通过将复杂的大任务分解为多个小任务,然后并行执行这些小任务,从而加速计算...

    java fork-join框架介绍

    fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的性能;设计的目的是为了处理那些可以被递归拆分的任务。

    Java并发Fork-Join框架原理

    Java并发Fork-Join框架原理是Java7中提供的一种并行执行任务的框架,旨在提高程序的执行效率和性能。该框架的核心思想是将大任务分割成若干个小任务,并将其分配给不同的线程执行,以充分利用多核CPU的计算能力。 ...

    Fork Join框架机制详解.docx

    在Java中,Fork/Join框架主要由`ForkJoinPool`线程池和`ForkJoinTask`任务类组成。 1. `ForkJoinPool`:这是Fork/Join框架的工作线程池。它维护着一组工作线程,用于执行`ForkJoinTask`。线程池中的每个工作线程都...

    JDK7中的ForkJoin模式

    JDK 7 中引入的 Fork/Join 模式是一种基于分治策略的并行编程模型,旨在简化在多核处理器环境下实现高效的并行计算。这一模式的核心思想是将复杂的大任务拆分成一系列小任务,然后将这些小任务并行执行,最后再合并...

    ForkJoinUtil.java,一个分而治之的框架工具类

    Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是...

Global site tag (gtag.js) - Google Analytics