Увеличение разрешений семафоров в Java - PullRequest
8 голосов
/ 20 марта 2012

Могу ли я добавить больше разрешений на семафор в Java?

Semaphore s = new Semaphore(3);

После этого где-то в коде я хочу изменить разрешения на 4. Возможно ли это?

1 Ответ

13 голосов
/ 20 марта 2012

Да.Метод release (путанно называемый imo) можно использовать для увеличения разрешений, поскольку из документов:

There is no requirement that a thread that releases a permit must 
have acquired that permit by calling acquire. 
Correct usage of a semaphore is established by programming convention
in the application. 

Другими словами:

semaphore.release(10);

Будет добавленоЕще 10 разрешений, если вызывающий поток не получил ни одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...