并发编程系列之Semaphore

前言

上节我们介绍了Java中的并发工具类CountDownLatch和Cyclicbarrier,今天我们再来说说另外两个并发工具类:Semaphore(信号量)和Exchanger(交换者),首先我们先来说说信号量这个东西,结合我们今天所讲的,我们了解下,这个东西到底有啥用,话不多说,让我们开启今天的并发之旅吧。

 

 

什么是信号量?

信号量是用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用公共资源。

这样说可能大家不是很理解,那我就举个生活中常见的场景,结合场景描述下Semaphore这个东西:

我们大家都去过大型商场,都知道商场都有自己的停车场,假设一个停车场允许的最大停车数量是200,当我们到达停车场时,会发现上面显示着剩余车位,如果剩余车位>0,那么栏杆会扫描完车牌放行,如果剩余车位=0,则说明已没有能使用的车位,此时就不放行,所以进入商场的车都需要排队等候,当里面有离开停车场,离开n辆就会放行n辆,这里用来控制是否放行的剩余车位数就可以理解为是一个信号量指示,成功扫描,或者拿到停车票的车子就能进入,他用来控制当前进入商场的车是否能放行。

 

 

如何使用信号量?

使用信号量我们首先要创建一个信号量

public Semaphore(int permits) {
       sync = new NonfairSync(permits);
   }

然后就可以调用Semaphore的相关方法,主要有如下几个方法:

// 获取一个信号量许可证
public void acquire() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Justin的后端书架

codeing不易,赏个鸡腿吧

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

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

打赏作者

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

抵扣说明:

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

余额充值