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; } }
相关推荐
1.ServerSocketChannel与SocketChannel通讯 2.java Fork/Join 与ThreadPool使用
Fork/Join框架Package jsr166y是Java 7并行编程类的的初步版本(Preliminary versions of classes targeted for Java 7.)
看了下Java Tutorials中的fork/join章节,整理下。 什么是fork/join框架 fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的...
fork join 框架 生产使用实例,可以直接修改配置,实现业务。
而 JDK 7 中将会加入的 Fork/Join 模式是处理并行编程的一个经典的方法。虽然不能解决所有的问题,但是在它的适用范围之内,能够轻松的利用多个 CPU 提供的计算资源来协作完成一个复杂的计算任务。通过利用 Fork/...
Fork/Join框架是Java7中新增的一项特性,也是Java7平台的其中一项主要改进。下面我们就来简单探讨下Java的Fork/Join框架
java Fork Join框架及使用,java自带的多线程框架,来处理多线程的问题
7 特性,例如 和 。 它是内置的,只能与 . 随着 JDK 8 中 lambda 及其支持特性的引入,我们用 Java 构建软件的方式将发生变化。 如果您想了解几年后您的 Java 代码会是什么样子,您可以查看 Wordcounter。 与目前...
主要为大家详细介绍了Java通过Fork、Join来优化并行计算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的性能;设计的目的是为了处理那些可以被递归拆分的任务。
主要介绍了浅谈Java Fork/Join并行框架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java并发网文归并总结。Fork and join,比较详细
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框架原理
Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是...
主要介绍了java8中forkjoin和optional框架使用心得以及用法讲解,需要的朋友参考下吧。
译文:Fork and Join: Java Can Excel at Painless Parallel Programming Too!(Fork and Join Java也可以轻松地编写并发程序)
Java提供Fork/Join框架用于并行执行任务,核心的思想就是将一个大任务切分成多个小任务,然后汇总每个小任务的执行结果得到这个大任务的最终结果。 这种机制策略在分布式数据库中非常常见,数据分布在不同的数据库的...
全网第一篇通过图文介绍Fork/Join框架与CompleteableFuture的PPT