信号量Semaphore介绍

java.util.Concurrent.Semaphore,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。java并发库的Semaphore可以轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过acquire()获取一个许可,如果许可用完线程阻塞,而release()释放一个许可。

 

Semaphore类似厕所有5个坑,假如10个人上厕所,只能同时进去5个,后面想进去必须要有人现出来。

另外如果出来一个人,那等待的人谁先进也有说法。如果调用构造方法Semaphore(num,true),那相当于5个人在外面排队,有人出来队头的先进去,这个排队先后就是每个线程调用acquire()方法的先后(估计内部用queue实现没看源码)。如果输入参数为false或直接调用构造方法Semaphore(num)则等同,5个人在外面不排队一有人出来就抢着上。

单个信号量的Semaphore对象可以实现互斥锁的功能,并且可以是一个线程获得“锁”,另一个线程释放“锁”,更灵活

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值