Java 分支合并(ForkJoin)

简介:Fork/Join是由Java 7提供的并行执行任务框架,思路就是任务切分,结果合并,同时利用工作窃取机制,目的是提高效率

1. 概念

  A. 分而治之:即将任务划分为多个子任务,然后并行的执行这些子任务,等所有子任务都结束的时候,再合并成最终结果;

  B. 工作窃取:当一个工作线程的本地没有任务去运行的时候,它将使用先进先出(FIFO)的规则尝试随机的从别的工作线程中拿一个任务去运行,工作开始从头,窃取从尾

2. 核心类

  A. ForkJoinPool是用于执行ForkJoinTask任务的执行池,维护了一个队列数组;

  B. WorkQueue是ForkJoinPool的一个内部类;

  C. ForkJoinWorkPool是用于执行任务的线程,每一个线程都有对应的一个WorkQueue;

  D. ForkJoinTask代表正在ForkJoinPool中运行的任务

    fork:安排任务异步执行,即创建一个子任务,

    join:当任务完成后返回计算结果,

    invoke:开始执行,如果计算没有完成,就会等待;

3. RecursiveTask和RecursiveAction的区别

  A. RecursiveTask有返回值,而RecursiveAction没有返回值

posted @   如幻行云  阅读(478)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示