如何获得Java中的所有许可证?

Dhe*_*put 1 java multithreading semaphore

我正在尝试使用信号量创建有界队列,并且我需要获取所有信号量许可。

Java中是否有任何方法可以做到这一点?

eri*_*son 5

呼叫acquire(int)将阻塞,直到获得指定数量的许可为止。

呼叫drainPermits()将获取当前可用的任何许可证,并立即返回。

获得“所有允许使用信号量”的概念实际上没有任何意义。Semaphore创建的A 具有初始数量的免费许可证,但您可以release()添加其他许可证,然后再添加acquire()它们。因此,您的应用程序应跟踪其希望分配的许可证数量,并仔细协调acquire()release()调用以确保数量不变。