`

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;
	}
}

 

分享到:
评论

相关推荐

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

    1.ServerSocketChannel与SocketChannel通讯 2.java Fork/Join 与ThreadPool使用

    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接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的...

    fork/join 实例

    fork join 框架 生产使用实例,可以直接修改配置,实现业务。

    JDK7中的ForkJoin模式

    而 JDK 7 中将会加入的 Fork/Join 模式是处理并行编程的一个经典的方法。虽然不能解决所有的问题,但是在它的适用范围之内,能够轻松的利用多个 CPU 提供的计算资源来协作完成一个复杂的计算任务。通过利用 Fork/...

    Java Fork/Join框架

    Fork/Join框架是Java7中新增的一项特性,也是Java7平台的其中一项主要改进。下面我们就来简单探讨下Java的Fork/Join框架

    java Fork Join框架及使用

    java Fork Join框架及使用,java自带的多线程框架,来处理多线程的问题

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

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

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

    主要为大家详细介绍了Java通过Fork、Join来优化并行计算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java fork-join框架介绍

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

    浅谈Java Fork/Join并行框架

    主要介绍了浅谈Java Fork/Join并行框架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java并发Fork and join

    Java并发网文归并总结。Fork and join,比较详细

    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框架原理

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

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

    java8中forkjoin和optional框架使用

    主要介绍了java8中forkjoin和optional框架使用心得以及用法讲解,需要的朋友参考下吧。

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

    译文:Fork and Join: Java Can Excel at Painless Parallel Programming Too!(Fork and Join Java也可以轻松地编写并发程序)

    Fork Join框架机制详解.docx

    Java提供Fork/Join框架用于并行执行任务,核心的思想就是将一个大任务切分成多个小任务,然后汇总每个小任务的执行结果得到这个大任务的最终结果。 这种机制策略在分布式数据库中非常常见,数据分布在不同的数据库的...

    Fork:join框架与CompleteableFuture源码解析.pptx

    全网第一篇通过图文介绍Fork/Join框架与CompleteableFuture的PPT

Global site tag (gtag.js) - Google Analytics