欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java并發(fā)編程之Fork/Join框架的理解

 更新時間:2021年06月07日 16:45:48   作者:小志的博客  
今天帶大家學習Java并發(fā)編程的相關知識,文中對Fork/Join框架作了非常詳細的介紹,對正在學習有關知識的小伙伴們很有幫助,需要的朋友可以參考下

一、Fork/Join框架的理解

在這里插入圖片描述

  • ForkJoinTask類屬于java.util.concurrent 包下;
  • ForkJoinTask類下有2個子類,分別為RecursiveTask和RecursiveAction類;(lz示例中使用RecursiveTask類進行重寫compute()方法進行實現(xiàn)數(shù)值的累加計算)
  • ForkJoinTask類 將一個大的任務拆分成多個子任務進行并行處理,最后將子任務結果合并成最后的計算結果,并進行輸出。

在這里插入圖片描述在這里插入圖片描述

二、Fork/Join框架使用示例

示例場景:對數(shù)值進行累加計算;

注:示例中使用ForkJoinTask類的子類(RecursiveTask類)進行重寫compute()方法進行實現(xiàn)數(shù)值的累加計算

1、代碼

package com.xz.thread.ForkJoin;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;

/**
 * @description:
 * @author: xz
 * @create: 2021-06-06 17:15
 */
public class Demo extends RecursiveTask<Integer> {
    private int start;//子任務開始計算的開始值
    private int end;//子任務開始計算的結束值

    private static final Integer MAX_VALUE = 50;

    //構造方法
    public Demo(int start, int end) {
        this.start = start;
        this.end = end;
    }

    //計算
    @Override
    protected Integer compute() {
        int sum =0;
        //如果所需要計算的數(shù)值拆分為足夠小,則進行累加計算
        if(end-start <= MAX_VALUE){
            System.out.println("startValue = " + start + ";endValue = " + end);
            for(int i=start;i<=end;i++){
                sum +=i;
            }
        }else{//否則再進行任務拆分,拆分成2個子任務
            Demo d1 = new Demo(start, (start + end) / 2);
            Demo d2 = new Demo((start + end) / 2, end);
            //執(zhí)行2個子任務
            d1.fork();
            d2.fork();
            //合并子任務
            Integer value1= d1.join();
            Integer value2= d2.join();
            sum =value1+value2;
        }

        return sum;
    }

    //測試
    public static void main(String[] args) throws Exception{
        //ForkJoinPool主要用于實現(xiàn)“分而治之”的算法,特別是分治之后遞歸調用的函數(shù)
        ForkJoinPool forkJoinPool = new ForkJoinPool();
        //提交一個ForkJoinTask執(zhí)行
        ForkJoinTask<Integer> forkJoinTask = forkJoinPool.submit(new Demo(1,200));
        System.out.println("計算結果="+forkJoinTask.get());
    }
}

2、運行測方法,輸出如下:

在這里插入圖片描述

3、結論:

由第2步驟的輸出結果可知,先把1到200的所有數(shù)值進行任務拆分(上圖拆分成了4部分),然后再將所有子任務結的果合并成最后的計算結果

到此這篇關于Java并發(fā)編程之Fork/Join框架的理解的文章就介紹到這了,更多相關Fork/Join框架的理解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于String實現(xiàn)同步鎖的方法步驟

    基于String實現(xiàn)同步鎖的方法步驟

    這篇文章主要給大家介紹了關于基于String實現(xiàn)同步鎖的方法步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用String具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Spring緩存機制實例代碼

    Spring緩存機制實例代碼

    這篇文章主要介紹了Spring緩存機制實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java 日志打印的15個好建議

    Java 日志打印的15個好建議

    這篇文章主要介紹了Java日志打印的15個好建議,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09
  • Java 實現(xiàn)多線程的幾種方式匯總

    Java 實現(xiàn)多線程的幾種方式匯總

    JAVA多線程實現(xiàn)方式主要有三種:繼承Thread類、實現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實現(xiàn)有返回結果的多線程。其中前兩種方式線程執(zhí)行完后都沒有返回值,只有最后一種是帶返回值的。
    2016-03-03
  • 詳解mybatis generator代碼生成器的使用

    詳解mybatis generator代碼生成器的使用

    MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代碼生成器。這篇文章主要介紹了mybatis generator代碼生成器的使用,需要的朋友可以參考下
    2021-09-09
  • java實現(xiàn)直線分形山脈

    java實現(xiàn)直線分形山脈

    這篇文章主要為大家詳細介紹了java實現(xiàn)直線分形山脈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 淺談Java封裝、繼承、多態(tài)特性

    淺談Java封裝、繼承、多態(tài)特性

    大家好,本篇文章主要講的是淺談Java封裝、繼承、多態(tài)特性,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • SpringMVC如何把后臺文件打印到前臺

    SpringMVC如何把后臺文件打印到前臺

    這篇文章主要介紹了SpringMVC如何把后臺文件打印到前臺,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理

    SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理

    這篇文章主要介紹了SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 詳解SpringBoot如何優(yōu)雅的處理免登錄接口

    詳解SpringBoot如何優(yōu)雅的處理免登錄接口

    在項目開發(fā)過程中,會有很多API接口不需要登錄就能直接訪問,比如公開數(shù)據(jù)查詢之類的,常規(guī)處理方法基本是 使用攔截器或過濾器,攔截需要認證的請求路徑,本文介紹一個更優(yōu)雅的方法自定義注解的方式,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2024-01-01

最新評論