成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java并發(fā)編程學(xué)習(xí)之Fork/Join 框架-RecursiveTask(二)

TerryCai / 3471人閱讀

摘要:示例計(jì)算一組數(shù)據(jù),設(shè)置閾值為,也就是說每次計(jì)算的數(shù)量不超過個(gè)??倲?shù)總數(shù)運(yùn)行結(jié)果如下可以看出,兩次結(jié)果是一樣的。創(chuàng)建繼承的類,實(shí)現(xiàn)方法,這里主要是計(jì)算以及拆分任務(wù)合并結(jié)果。

示例

計(jì)算一組數(shù)據(jù),設(shè)置閾值為50,也就是說每次計(jì)算的數(shù)量不超過50個(gè)。

public class RecursiveTaskDemo extends RecursiveTask {
    private static final int MAX = 50;
    private int[] arr;
    private int start;
    private int end;

    public RecursiveTaskDemo(int[] arr, int start, int end) {
        this.arr = arr;
        this.start = start;
        this.end = end;
    }

    @Override
    protected Integer compute() {
        if ((end - start) < MAX) {
            int sum = 0;
            for (int i = start; i <= end; i++) {
                sum += arr[i];
            }
            return sum;
        } else {
            int mid = (end + start) / 2;
            RecursiveTaskDemo left = new RecursiveTaskDemo(arr, start, mid);
            RecursiveTaskDemo right = new RecursiveTaskDemo(arr, mid + 1, end);
            invokeAll(left, right);
            return left.join() + right.join();
        }
    }

    public static void main(String[] args) {
        ForkJoinPool pool = new ForkJoinPool();
        int[] randomArr = getRandomArr(1000);
        RecursiveTaskDemo task = new RecursiveTaskDemo(randomArr, 0, randomArr.length - 1);
        System.out.println("總數(shù)1=" + pool.invoke(task));

        System.out.println("總數(shù)2=" + Arrays.stream(randomArr).parallel().sum());
    }

    public static int[] getRandomArr(int num) {
        int[] arr = new int[num];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new Random().nextInt(1000);
        }
        return arr;
    }
}

運(yùn)行結(jié)果如下:

可以看出,兩次結(jié)果是一樣的。

步驟

創(chuàng)建ForkJoinPool對(duì)象。

創(chuàng)建繼承RecursiveTask的類,實(shí)現(xiàn)compute方法,這里主要是計(jì)算以及拆分任務(wù)、合并結(jié)果。

pool.invoke方法調(diào)用。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75257.html

相關(guān)文章

  • java并發(fā)編程學(xué)習(xí)之Fork/Join 框架-基本概念(一)

    摘要:思想把大任務(wù)分割成多個(gè)小任務(wù),再把小任務(wù)的結(jié)果匯總,最終得到大任務(wù)的結(jié)果。當(dāng)一個(gè)線程執(zhí)行完當(dāng)前隊(duì)列的任務(wù)時(shí),他就會(huì)去竊取其他隊(duì)列的任務(wù)來執(zhí)行。當(dāng)雙端隊(duì)列只有一個(gè)任務(wù)時(shí),線程之間會(huì)競(jìng)爭(zhēng)。 思想 把大任務(wù)分割成多個(gè)小任務(wù),再把小任務(wù)的結(jié)果匯總,最終得到大任務(wù)的結(jié)果。 步驟如下: 任務(wù)分割 結(jié)果匯總 示例圖 showImg(https://segmentfault.com/img/bVb...

    hikui 評(píng)論0 收藏0
  • 想進(jìn)大廠?50個(gè)多線程面試題,你會(huì)多少?【后25題】(

    摘要:大多數(shù)待遇豐厚的開發(fā)職位都要求開發(fā)者精通多線程技術(shù)并且有豐富的程序開發(fā)調(diào)試優(yōu)化經(jīng)驗(yàn),所以線程相關(guān)的問題在面試中經(jīng)常會(huì)被提到。掌握了這些技巧,你就可以輕松應(yīng)對(duì)多線程和并發(fā)面試了。進(jìn)入等待通行準(zhǔn)許時(shí),所提供的對(duì)象。 最近看到網(wǎng)上流傳著,各種面試經(jīng)驗(yàn)及面試題,往往都是一大堆技術(shù)題目貼上去,而沒有答案。 不管你是新程序員還是老手,你一定在面試中遇到過有關(guān)線程的問題。Java語言一個(gè)重要的特點(diǎn)就...

    caozhijian 評(píng)論0 收藏0
  • Java 8 的 JVM 有多快?Fork-Join 性能基準(zhǔn)測(cè)試

    摘要:這減輕了手動(dòng)重復(fù)執(zhí)行相同基準(zhǔn)測(cè)試的痛苦,并簡(jiǎn)化了獲取結(jié)果的流程。處理項(xiàng)目的代碼并從標(biāo)有注釋的方法處生成基準(zhǔn)測(cè)試程序。用和運(yùn)行該基準(zhǔn)測(cè)試得到以下結(jié)果。同時(shí),和的基線測(cè)試結(jié)果也有略微的不同。 Java 8 已經(jīng)發(fā)布一段時(shí)間了,許多開發(fā)者已經(jīng)開始使用 Java 8。本文也將討論最新發(fā)布在 JDK 中的并發(fā)功能更新。事實(shí)上,JDK 中已經(jīng)有多處java.util.concurrent 改動(dòng),但...

    Euphoria 評(píng)論0 收藏0
  • Fork/Join框架

    摘要:框架框架簡(jiǎn)介框架是提供的一個(gè)用于并行執(zhí)行任務(wù)的框架,是一個(gè)把大任務(wù)分割成若干個(gè)小任務(wù),最終匯總每個(gè)小任務(wù)結(jié)果得到大任務(wù)結(jié)果的框架??蚣軐?shí)例需求計(jì)算的結(jié)果。 Fork/Join框架 1. Fork/Join框架簡(jiǎn)介 Fork/Join框架是java7提供的一個(gè)用于并行執(zhí)行任務(wù)的框架,是一個(gè)把大任務(wù)分割成若干個(gè)小任務(wù),最終匯總每個(gè)小任務(wù)結(jié)果得到大任務(wù)結(jié)果的框架。Fork指的就是把一個(gè)大任務(wù)...

    GitChat 評(píng)論0 收藏0
  • Fork/Join框架簡(jiǎn)介

    摘要:第二步執(zhí)行任務(wù)并合并結(jié)果。使用兩個(gè)類來完成以上兩件事情我們要使用框架,必須首先創(chuàng)建一個(gè)任務(wù)。用于有返回結(jié)果的任務(wù)。如果任務(wù)順利執(zhí)行完成了,則設(shè)置任務(wù)狀態(tài)為,如果出現(xiàn)異常,則紀(jì)錄異常,并將任務(wù)狀態(tài)設(shè)置為。 1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一個(gè)用于并行執(zhí)行任務(wù)的框架, 是一個(gè)把大任務(wù)分割成若干個(gè)小任務(wù),最終匯總每個(gè)小任務(wù)結(jié)果后得到大任務(wù)結(jié)果的...

    W_BinaryTree 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<