Java信号量release()可以在acquire()之前出现

Semaphore是一个同步原语,允许线程管理一组许可。它支持动态增加许可数量,比如通过调用`release()`方法。这个特性使得Semaphore在控制并发和执行线程节流时非常有用。线程可以自由地增加许可,即使它们没有先通过`acquire()`获取许可。通过这种方式,Semaphore能灵活地适应变化的系统需求。

Semaphore允许您将许可增加到超出初始数量的范围。这可以用于例如节流。acquire()/release()根据某些逻辑,工作线程将执行此操作,并且节流器将减少/增加许可。

 

release()方法用于增加许可,因为从文档开始:

不要求释放许可证的线程必须通过调用acquire获取该许可证。通过在应用程序中编程约定,可以正确使用信号量。

换一种说法:

semaphore.release(10),将在当前许可的基础上再增加10个许可

 

release()如果该线程先前未从该线程获得许可,则可以将其视为“创建”另一个许可Semaphore

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值