Java并发编程原理与实战三十二:ForkJoin框架详解
1、Fork/Join框架有什么用呢?
-------》Fork使用来切分任务,Join是用来汇总结果。举个简单的栗子:任务是1+2+3+...+100这个任务(当然这个任务的结果有好的算法去做,现在是用笨方法去计算这个结果)。
------》适合在多核环境下,单核环境使用ForkJoin没什么意思。简单来说就是,一个任务切割成多个小的任务,这些小的任务分配给多个CPU去执行,从而达到提高CPU的执行率。

public class Demo extends RecursiveTask { private int begin; private int end; public Demo(int begin, int end) { this.begin = begin; this.end = end; } @Override protected Integer compute() { System.out.println(Thread.currentThread().getName() + " ... "); int sum = 0; // 拆分任务 if (end - begin <= 2) { // 计算 for (int i = begin; i <= end; i++) { sum += i; } } else { // 拆分 Demo d1 = new Demo(begin, (begin + end) / 2); Demo d2 = new Demo((begin + end)/2 + 1, end); // 执行任务 d1.fork(); d2.fork(); Integer a = d1.join(); Integer b = d2.join(); sum = a + b; } return sum; } public static void main(String[] args) throws Exception { ForkJoinPool pool = new ForkJoinPool(3); Future future = pool.submit(new Demo(1, 100)); System.out.println("...."); System.out.println("计算的值为:" + future.get()); } }
总结:
-----》当我们的CPU不够强劲的时候,使用ForkJoin的话,会很损耗我们的CPU资源。不太适合我们小的PC电脑上运行,适合运行在Linux环境下的。
我们要记住两点就基本可以了。
1、在多核环境下,使用ForkJoin确实能提高执行性能
2、能提高CPU的利用率
个人感觉这个ForkJoin框架使用起来,还有有点难度的,开发人员只需要关注怎样用ForkJoin就可以了,则关注任务是怎样切分的。本人觉得怎样切,也是有点难度。-_-|| (还是看具体使用场景吧。。。)
参考资料:
《java并发编程与实战》龙果学院
分类:
JUC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端