【Java并发编程】2.常用线程的并发工具类

本文详细介绍了Java中的Fork/Join框架,包括Fork/Join流程、工作窃取模式及其优势与缺点,以及核心组件如ForkJoinPool、ForkJoinTask、ForkJoinWorkerThread和WorkQueue的工作原理。通过实例展示了如何使用ForkJoinPool进行任务分解和合并。此外,还探讨了CountDownLatch、CyclicBarrier和Semaphore等并发工具类的用法和区别。最后提到了Callable、Future和FutureTask在多线程任务处理中的组合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在这里插入图片描述

ForkJoin

1.Fork/Join流程:

ForkJoin是一种分治的思想,在1.7中引入JDK中。现实生活中的快排,队排,MapReduce都是思想的 实现,意思是在必要的情况下,将一个大任务,进行拆分(fork) 成若干个子任务(拆到不能再拆,这里就是指我们制定的拆分的临界值),再将一个个小任务的结果进行join汇总。
在这里插入图片描述

2. 工作窃取模式

从上述Fork/Join框架的描述可以看出,我们需要一些线程来执行Fork出的任务,在实际中,如果每次都创建新的线程执行任务,对系统资源的开销会很大,所以Fork/Join框架利用了线程池来调度任务。

另外,这里可以思考一个问题,既然由线程池调度,根据我们之前学习普通/计划线程池的经验,必然存在两个要素:

工作线程
任务队列

一般的线程池只有一个任务队列,但是对于Fork/Join框架来说

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SoWhat1412

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值