Java通过Fork/Join优化并行计算
本文实例为大家分享了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)); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
网站栏目:Java通过Fork/Join优化并行计算
文章源于:http://azwzsj.com/article/pgpois.html