概要
Semaphore
当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库的Semaphore
可以很轻松完成信号量控制,Semaphore
可以控制某个资源可被同时访问的个数,通过 acquire()
获取一个许可,如果没有就等待,而release()
释放一个许可。用来控制资源同时访问个数
以一个停车场运作为例。假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开两辆,则又可以放入两辆,如此往复。
构造函数
Semaphore
提供了一个带有boolean
参数的构造方法,true
代表公平锁,false
代表非公平锁,默认实现是非公平锁。
|
|
普通方法
|
|
停车案例
|
|
输出结果:
|
|