多线程之Semaphore详解(七)

Semaphore作为JUC中的重要工具,用于控制并发线程数和互斥资源。本文详细介绍了Semaphore的概念,通过停车场停车的例子解释其工作原理,并剖析了Semaphore的源码,包括公平与非公平锁的实现。此外,还探讨了acquire和release方法的实现细节,以及其与AQS的关系。
摘要由CSDN通过智能技术生成

上篇博客我们详细的介绍了一下CyclicBarrier,这篇博客我们详细的介绍Semaphore。

什么是Semaphore

semaphore从字面含义理解是信号量,它是JUC包中比较常用的一个类,它也是AQS共享模式的一个实现。信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。利用它可以很好地实现流程控制。利用Semaphore可以实现各种池,例如:Hystrix的semaphore模式就是利用它实现。

Semaphore实例讲解

我们模式一个停车场停车信号,假设停车场只有3个空的停车位,现在有5辆车要停车。一开始3个车位都是空的,这时如果同时来了3辆车,看门人允许它们进入停车场,然后放下车拦。以后来的车必须在入口等待,直到停车场中有车辆离开。这时,如果有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开一辆,则又可以放入一辆,如此往复。

public<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿小亮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值