`

JAVA7 FORK/JOIN

    博客分类:
  • JAVA
 
阅读更多

Fork/Join框架设计目标就是可以容易地将算法并行化、分治化,Fork/Join框架设计目标就是可以容易地将算法并行化、分治化。

ForkJoinPool类是ForkJoinTask实例的执行者,ForkJoinPool的主要任务就是”工作窃取”,其线程尝试发现和执行其他任务创建的子任务。ForkJoinTask实例与普通Java线程相比是非常轻量的。

ForkJoinTask有两个主要的方法:

  • fork () – 这个方法决定了ForkJoinTask的异步执行,凭借这个方法可以创建新的任务。
  • join () – 该方法负责在计算完成后返回结果,因此允许一个任务等待另一任务执行完成。

求和或归并排序使用

class Client {
	public void result() {
		int processors = Runtime.getRuntime().availableProcessors();
		Calculate c = new Calculate(1, 5);
		SumTask task = new SumTask(c);
		ForkJoinPool pool = new ForkJoinPool(processors);
		pool.invoke(task);
		System.out.println("result: " + task.getResult());
	}
}

class SumTask extends RecursiveTask<Integer> {

	private static final long serialVersionUID = 10001L;

	private Calculate c;

	private int result;

	public SumTask(Calculate c) {
		this.c = c;
	}

	@Override
	protected Integer compute() {
		if (c.getNum() < 2) {
			result = c.calculate();
		} else {
			SumTask task1 = new SumTask(new Calculate(c.getStart(), c.getNum() / 2));
			SumTask task2 = new SumTask(new Calculate(c.getNum() / 2 + 1, c.getNum()));
			task1.fork();
			result = task2.compute() + task1.join();
		}
		return result;
	}

	public int getResult() {
		return result;
	}
}

class Calculate {
	private int num;
	private int start;

	public Calculate(int start, int end) {
		this.num = end - start + 1;
		this.start = start;
	}

	public int calculate() {
		return start;
	}

	public int getNum() {
		return this.num;
	}

	public int getStart() {
		return start;
	}
}

 

分享到:
评论

相关推荐

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

    word源码java-Wordcounter:Java库和实用程序,用于使用Java8lambdas和Java7Fork/Join计算和分析文

    7 特性,例如 和 。 它是内置的,只能与 . 随着 JDK 8 中 lambda 及其支持特性的引入,我们用 Java 构建软件的方式将发生变化。 如果您想了解几年后您的 Java 代码会是什么样子,您可以查看 Wordcounter。 与目前...

    java fork-join框架介绍

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

    Java 7 Concurrency Cookbook

    Chapter 5, Fork/Join Framework will teach the readers to use the new Java 7 Fork/Join framework. It’s a special kind of executor oriented to execute tasks that will be divided into smaller ones using...

    Java并发Fork-Join框架原理

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

    Fork-Join框架演示

    Fork-Join框架是Java 7中`java.util.concurrent`包的一部分,该包提供了高级别的并发工具,旨在简化并行编程。Fork-Join框架尤其专注于细粒度并行任务的执行,允许开发者通过简单的接口实现复杂算法的并行化。 ####...

    Fork Join框架机制详解.docx

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

Global site tag (gtag.js) - Google Analytics