专业做网文的网站有哪些,搜索引擎营销优化,网站建设开发公司地址,wordpress如何打包成appfork-join框架允许在几个工作进程中断某个任务#xff0c;然后等待结果组合它们。 它在很大程度上利用了多处理器机器的生产能力。 以下是fork-join框架中使用的核心概念和对象。ForkFork是一个进程#xff0c;其中任务将其分成可以并发执行的较小且独立的子任务。语法Sum le…fork-join框架允许在几个工作进程中断某个任务然后等待结果组合它们。 它在很大程度上利用了多处理器机器的生产能力。 以下是fork-join框架中使用的核心概念和对象。ForkFork是一个进程其中任务将其分成可以并发执行的较小且独立的子任务。语法Sum left new Sum(array, low, mid);left.fork();这里Sum是RecursiveTask的子类left.fork()方法将任务分解为子任务。Join连接(Join)是子任务完成执行后任务加入子任务的所有结果的过程否则它会持续等待。语法left.join();这里剩下的是Sum类的一个对象。ForkJoinPool它是一个特殊的线程池旨在使用fork-and-join任务拆分。语法ForkJoinPool forkJoinPool new ForkJoinPool(4);这里有一个新的ForkJoinPool并行级别为4个CPU。RecursiveActionRecursiveAction表示不返回任何值的任务。语法class Writer extends RecursiveAction {Overrideprotected void compute() { }}递归任务RecursiveTask表示返回值的任务。语法class Sum extends RecursiveTask {Overrideprotected Long compute() { return null; }}实例以下TestThread程序显示了基于线程的环境中Fork-Join框架的使用。import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.RecursiveTask;public class TestThread {public static void main(final String[] arguments) throws InterruptedException, ExecutionException {int nThreads Runtime.getRuntime().availableProcessors();System.out.println(nThreads);int[] numbers new int[1000];for(int i0; i numbers.length; i){numbers[i] i;}ForkJoinPool forkJoinPool new ForkJoinPool(nThreads);Long result forkJoinPool.invoke(new Sum(numbers,0,numbers.length));System.out.println(result);}static class Sum extends RecursiveTask {int low;int high;int[] array;Sum(int[] array, int low, int high) {this.array array;this.low low;this.high high;}protected Long compute() {if(high - low 10) {long sum 0;for(int ilow; i high; i)sum array[i];return sum;} else {int mid low (high - low) / 2;Sum left new Sum(array, low, mid);Sum right new Sum(array, mid, high);left.fork();long rightResult right.compute();long leftResult left.join();return leftResult rightResult;}}}}这将产生以下结果 -4499500¥ 我要打赏纠错/补充收藏加QQ群啦易百教程官方技术学习群注意建议每个人选自己的技术方向加群同一个QQ最多限加 3 个群。