并发编程原理与实战(十)并发协同利器Phaser之概念详解

并发编程原理与实战(一)精准理解线程的创建和停止

并发编程原理与实战(二)Thread类关键API详解

并发编程原理与实战(三)一步步剖析线程返回值

并发编程原理与实战(四)经典并发协同方式synchronized与wait+notify详解

并发编程原理与实战(五)经典并发协同方式伪唤醒与加锁失效原理揭秘

并发编程原理与实战(六)详解并发协同利器CountDownLatch

并发编程原理与实战(七)详解并发协同利器CyclicBarrier

并发编程原理与实战(八)详解并发协同利器Semaphore

并发编程原理与实战(九)限流利器信号量的最佳实践分析

回顾下之前已经学习的CountDownLatch、CyclicBarrier、Semaphore等工具的使用场景,CountDownLatch主要用于等待多个线程完成后继续执行或者多个线程等待同时执行,不能重复使用;CyclicBarrier主要用于多个线程等待同时执行或者多个线程多次等待同时执行,可以重复使用;Semaphore主要用于控制并发访问资源的线程数量。

在多个线程同时调用接口这个场景中,如果我们要在不同的时间段分阶段压测接口,用于模拟正式环境上不同时间段的系统访问量,以便观察系统在不同时间段的资源使用情况。在这个场景中,有两个重要的特征:多阶段重复调用,每个阶段能灵活调整参与调用接口的线程数量。似乎CountDownLatch、CyclicBarrier、Semaphore这个三个工具均不能满足,此时另一个并发协同工具Phaser出现了。

多阶段并发协同工具Phaser

Phase的字面的意思是“阶段”,‘’时期‘的意思,Phaser的字面意思是“相位器”,“移相器”的意思,从字面上理解就是多阶段的相位器。Phaser是JDK1.7以后新增的灵活的多阶段并发协同相位器,可以替代CountDownLatch和CyclicBarrier,适用于更复杂的并发协同需求‌。它允许多个线程在多个阶段上进行协同,而不是像CountDownLatch那样只能在一个点上进行协同。下面我们来学习下Phaser相关的一些基础概念。

注册与注销
/**
 * A reusable synchronization barrier, similar in functionality to
 * {@link CyclicBarrier} and {@link CountDownLatch} but supporting
 * more flexible usage.
 *
 * <p><b>Registration.</b> Unlike the case for other barriers, the
 * number of parties <em>registered</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帧栈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值