0%

semaphore信号量使用

锁的说明

java中锁有SynchronizedReentrantLock,但是这两种锁一次只能允许一个线程访问资源,而信号量semaphore可以控制多个线程同时获取资源,实现更高级别的限流.

semaphore使用

// 创建信号量,permits表示许可证数量
Semaphore semaphore = new Semaphore(permits);
// 获取一个许可证
semaphore.acquire();
// 获取多个许可证
semaphore.acquire(2);

// 归还一个许可证
semaphore.release();
// 归还多个许可证
semaphore.release(2);

使用场景

如一个停车场有10个停车位,小型车辆进入需要获取一个许可证,大型车辆进入需要获取多个许可证,车辆驶出时归还许可证.