1
A
回答
4
调用acquire(int)
将阻塞,直到获得指定数量的许可证。
致电drainPermits()
将获得当前可用并立即返回的任何许可证。
获得“所有信号量许可”的概念并没有意义。 A Semaphore
是用最初的免费许可证数量创建的,但你可以在release()
附加许可证然后acquire()
他们。因此,您的应用程序应该跟踪它希望分配的许可数量,并仔细协调acquire()
和release()
调用,以确保该数字不会更改。
请参阅https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html#acquire(int) –
@ShireResident,实际上,drainPermits()方法可能会更好适合。 –
@jameslarge。感谢你的回答 –