锁的说明
java
中锁有Synchronized
、ReentrantLock
,但是这两种锁一次只能允许一个线程访问资源,而信号量semaphore
可以控制多个线程同时获取资源,实现更高级别的限流
.
semaphore使用
// 创建信号量,permits表示许可证数量
Semaphore semaphore = new Semaphore(permits);
// 获取一个许可证
semaphore.acquire();
// 获取多个许可证
semaphore.acquire(2);
// 归还一个许可证
semaphore.release();
// 归还多个许可证
semaphore.release(2);
使用场景
如一个停车场有10个停车位,小型车辆进入需要获取一个许可证,大型车辆进入需要获取多个许可证,车辆驶出时归还许可证.