4
我想了解drainPermits的在Java Semaphore類合同如果沒有許可證,Semaphor.drainPermits會做什麼?
的JavaDoc的只是讀取:
公衆詮釋drainPermits()
Acquire and return all permits that are immediately available. Returns: the number of permits
如果沒有許可證是目前可用,是否阻止並等到有人可用?
因此,如果我正在審查代碼,看起來有人可能使用它來鎖定,他們會遇到一個令人討厭的驚喜,對吧? – Uri 2009-09-02 14:07:53
這取決於他們在做什麼。 「使用它來鎖定」並不真正提供很多暗示。 – 2009-09-02 14:09:57
如果它們初始化爲1並且使用drain執行 「tryAcquire」就沒有問題。 在許多不同的語言和系統中,(非嵌套)互斥鎖的許多實現都是一個初始化爲1的信號量。 – pgast 2009-09-03 01:52:41