目录
一.简介
二.方法总结
三.方法详情
1.acquire()
2.acquire(int permits)
3.tryAcquire()
4.tryAcquire(int permits)
5.tryAcquire(long waitTime, TimeUnit unit)
6.tryAcquire(int permits, long waitTime, TimeUnit unit)
7.release()
8.release(int permits)
9.availablePermits()
10.drainPermits()
11.trySetPermits(int permits)
12.addPermits(int permits)
四.使用示例
五.源码解析
1.semaphore.trySetPermits(3);
2.semaphore.acquire()
3.semaphore.release()
总结
一.简介
RSemaphore基于 Redis 的Semaphore开发。使用RSemaphore获取资源的顺序是不可预测的,所以它是一种非公平锁。可以理解为分布式的信号量,它的作用是用来限制同时访问共享区域的线程数量。
二.方法总结
| Modifier and Type | Method | Description |
|---|---|---|
void |
acquire() |
获取1个permit. |
void |
acquire(int permits) |
获取定义数量的permits. |
void |
addPermits(int permits) |
按定义的值增加或减少可用许可证的数量。 |
int |
availablePermits() |
返回可用许可证的数量。 |
int |
drainPermits() |
获取并返回所有立即可用的许可证。 |
void |
release() |
释放1个permit. |
void |
release(int permits) |
释放定义数量的permits. |
boolean |
tryAcquire() |
尝试获取当前可用的许可证。 |
boolean |
tryAcquire(int permits) |
尝试获取定义数量的permits。 |
boolean |
tryAcquire(int permits, long waitTime, TimeUnit unit) |
尝试获取定义数量的permits。如果获取不到,就一直等待,直到获取到指定数量的permits。最长等待waitTime时间。 |
boolean |
tryAcquire(long waitTime, TimeUnit unit) |
尝试获取1个permit。如果获取不到,就一直等待,直到成功获取1个permit。最长等待waitTime时间。 |
boolean |
trySetPermits(int permits) |
尝试设置许可证数量。 |
三.方法详情
1.acquire()
void acquire() throws InterruptedException
讯享网
获取1个permit。如果没有,会一直等待,直到获得1个permit。
抛出:
InterruptedException - 如果当前线程被中断
InterruptedException
2.acquire(int permits)
讯享网void acquire(int permits) throws InterruptedException
获取定义数量的permits。如果没有,会一直等待,直到获得定义数量的permits。
参数:
permits - 获得许可的数量
抛出:
InterruptedException - 如果当前线程被中断
IllegalArgumentException- 如果permits是负数
3.tryAcquire()
boolean tryAcquire()
尝试获取当前可用的许可证。
返回:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/26461.html