我正在尝试使用信号量创建一个有界队列,我需要获取信号量的所有许可。
Java中是否有任何方法可以做到这一点?
答案 0 :(得分:4)
调用acquire(int)
将阻止,直到获得指定数量的许可。
致电drainPermits()
将获得当前可用的许可并立即返回。
获取信号量的所有许可的概念"没有意义。 Semaphore
创建了初始免费许可数量,但您可以release()
个额外许可,然后acquire()
。因此,您的应用程序应跟踪其希望分配的许可数量,并仔细协调acquire()
和release()
调用,以确保该数字不会更改。