返回顶部
首页 > 资讯 > 精选 >Java并发编程之Fork/Join框架的示例分析
  • 677
分享到

Java并发编程之Fork/Join框架的示例分析

2023-06-15 09:06:24 677人浏览 安东尼
摘要

这篇文章主要介绍了Java并发编程之Fork/Join框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Fork/Join框架的理解ForkJoinTask类属

这篇文章主要介绍了Java并发编程之Fork/Join框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、Fork/Join框架的理解

Java并发编程之Fork/Join框架的示例分析

  • ForkJoinTask类属于java.util.concurrent 包下;

  • ForkJoinTask类下有2个子类,分别为RecursiveTask和RecursiveAction类;(lz示例中使用RecursiveTask类进行重写compute()方法进行实现数值的累加计算)

  • ForkJoinTask类 将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。

Java并发编程之Fork/Join框架的示例分析Java并发编程之Fork/Join框架的示例分析

二、Fork/Join框架使用示例

示例场景:对数值进行累加计算;

注:示例中使用ForkJoinTask类的子类(RecursiveTask类)进行重写compute()方法进行实现数值的累加计算

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;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;        //如果所需要计算的数值拆分为足够小,则进行累加计算        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);            //执行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主要用于实现“分而治之”的算法,特别是分治之后递归调用的函数        ForkJoinPool forkJoinPool = new ForkJoinPool();        //提交一个ForkJoinTask执行        ForkJoinTask<Integer> forkJoinTask = forkJoinPool.submit(new Demo(1,200));        System.out.println("计算结果="+forkJoinTask.get());    }}

2、运行测方法,输出如下:

Java并发编程之Fork/Join框架的示例分析

感谢你能够认真阅读完这篇文章,希望小编分享的“java并发编程之Fork/Join框架的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Java并发编程之Fork/Join框架的示例分析

本文链接: https://lsjlt.com/news/279439.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java并发编程之Fork/Join框架的示例分析
    这篇文章主要介绍了Java并发编程之Fork/Join框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Fork/Join框架的理解ForkJoinTask类属...
    99+
    2023-06-15
  • Java并发编程之Fork/Join框架的理解
    一、Fork/Join框架的理解 ForkJoinTask类属于java.util.concurrent 包下; ForkJoinTask类下有2个子类,分别为R...
    99+
    2024-04-02
  • 如何分析Java的Fork/Join并发框架
    这篇文章将为大家详细讲解有关如何分析Java的Fork/Join并发框架,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天我就把自己对Fork/Join一些浅显的理解记录下来。1. Fork...
    99+
    2023-06-17
  • Java并发中的Fork/Join 框架机制详解
    什么是 Fork/Join 框架 Fork/Join 框架是一种在 JDk 7 引入的线程池,用于并行执行把一个大任务拆成多个小任务并行执行,最终汇总每个小任务结果得到大任务结果的特...
    99+
    2024-04-02
  • Java并发fork/join框架的介绍及使用
    本篇内容主要讲解“Java并发fork/join框架的介绍及使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java并发fork/join框架的介绍及使用”吧!目录一、概述二、说一说 Recu...
    99+
    2023-06-20
  • 轻轻松松吃透Java并发fork/join框架
    目录一、概述二、说一说 RecursiveTask三、 Fork/Join框架基本使用四、工作顺序图1、ForkJoinPool构造函数2、fork方法和join方法五、使用Fork...
    99+
    2024-04-02
  • 剖析Fork join并发框架工作窃取算法
    目录什么是Fork/Join框架工作窃取算法Fork/Join框架的介绍使用Fork/Join框架Fork/Join框架的异常处理Fork/Join框架的实现原理Fork/Join源...
    99+
    2024-04-02
  • Java多线程高并发中的Fork/Join框架机制详解
    1.Fork/Join框架简介 Fork/Join 它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。Fork/Join 框架要完成...
    99+
    2024-04-02
  • Java并发编程之线程池的示例分析
    这篇文章将为大家详细讲解有关Java并发编程之线程池的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是线程池是一种基于池化思想管理线程的工具。池化技术:池化技术简单点来说,就是提前保存大量的资...
    99+
    2023-06-20
  • Java并发编程之ConcurrentLinkedQueue源码的示例分析
    这篇文章给大家分享的是有关Java并发编程之ConcurrentLinkedQueue源码的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、ConcurrentLinkedQueue介绍并编程中,一般需...
    99+
    2023-06-15
  • Java面试题之并发编程的示例分析
    小编给大家分享一下Java面试题之并发编程的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!面试题1:说一下你对ReentrantLock的理解?ReentrantLock是JDK1.5引入的,它拥有与synchro...
    99+
    2023-06-20
  • Java 并发编程之ForkJoin框架
    目录1、什么是ForkJoin框架2、ForkJoinTask3、ForkJoinPool4、打印斐波那契数列5、ForkJoin归并排序总结 1、什么是ForkJoin框架 For...
    99+
    2024-04-02
  • Java并发编程之关键字volatile的示例分析
    这篇文章给大家分享的是有关Java并发编程之关键字volatile的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、作用被 volatile 修饰的变量保证了不同线程对该变量操作的内存可见性禁止指令重排...
    99+
    2023-06-15
  • Java并发编程之同步容器与并发容器的示例分析
    这篇文章主要为大家展示了“Java并发编程之同步容器与并发容器的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java并发编程之同步容器与并发容器的示例分析”这篇文章吧。一、同步容器&n...
    99+
    2023-06-15
  • Java之JMM高并发编程实例分析
    这篇文章主要介绍“Java之JMM高并发编程实例分析”,在日常操作中,相信很多人在Java之JMM高并发编程实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java之JMM高并发编程实例分析”的疑惑有所...
    99+
    2023-07-02
  • Go并发编程的示例分析
    这篇文章给大家分享的是有关Go并发编程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、goroutine定义给函数前加上go即可不需要在定义是区分是否是异步函数调度器在合适的点进行切换,这个点是有很多...
    99+
    2023-06-20
  • java并发包JUC同步器框架AQS的示例分析
    小编给大家分享一下java并发包JUC同步器框架AQS的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 背景介绍通过JCP的JSR166规范,Java...
    99+
    2023-06-29
  • Java基础之MapReduce框架的示例分析
    小编给大家分享一下Java基础之MapReduce框架的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、MapTask工作机制MapTask就是Map阶...
    99+
    2023-06-15
  • Java并发编程之线程状态实例分析
    今天小编给大家分享一下Java并发编程之线程状态实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线程状态概述线程由生到...
    99+
    2023-06-30
  • PHP之CI框架的示例分析
    这篇文章将为大家详细讲解有关PHP之CI框架的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言CodeIgniter 是一个简单快速的PHP MVC框架。EllisLab 的工作人员发布了 ...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作