时间:2021-05-20
本文实例为大家分享了Java通过Fork/Join优化并行计算的具体代码,供大家参考,具体内容如下
Java代码:
package Threads;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.RecursiveAction;/** * Created by Frank */public class RecursiveActionDemo extends RecursiveAction { static int[] raw = {19, 3, 0, -1, 57, 24, 65, Integer.MAX_VALUE, 42, 0, 3, 5}; static int[] sorted = null; int[] source; int[] dest; int length; int start; final static int THRESHOLD = 4; public static void main(String[] args) { sorted = new int[raw.length]; ForkJoinPool pool = new ForkJoinPool(); pool.invoke(new RecursiveActionDemo(raw, 0, raw.length, sorted)); System.out.println('['); for (int i : sorted) { System.out.println(i + ","); } System.out.println(']'); } public RecursiveActionDemo(int[] source, int start, int length, int[] dest) { this.source = source; this.dest = dest; this.length = length; this.start = start; } @Override protected void compute() { System.out.println("ForkJoinDemo.compute()"); if (length < THRESHOLD) { // 直接计算 for (int i = start; i < start + length; i++) { dest[i] = source[i] * source[i]; } } else { // 分而治之 int split = length / 2; /** * invokeAll反复调用fork和join直到完成。 */ invokeAll(new RecursiveActionDemo(source, start, split, dest), new RecursiveActionDemo(source, start + split, length - split, dest)); } }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
初步了解Fork/Join框架Fork/Join框架是java7中加入的一个并行任务框架,可以将任务分割成足够小的小任务,然后让不同的线程来做这些分割出来的小事
lambda表达式以及并行流。官方承诺你写出来的代码更运行得更快。流会自动通过Fork/Join池并行地执行。我听过一些关于Java8的主题的演讲,不过在这个非
forkjoin框架是java7中引入框架,这个框架的引入主要是为了提升并行计算的能力。forkjoin主要有两个步骤,第一就是fork,将一个大任务分成很多个
引言java7提供了另外一个很有用的线程池框架,Fork/Join框架理论Fork/Join框架主要有以下两个类组成.*ForkJoinPool这个类实现了Ex
在.net4.0以后异步操作,并行计算变得异常简单,但是由于公司项目开发基于.net3.5所以无法用到4.0的并行计算以及Task等异步编程。因此,为了以后更方