Способ перевода семафорного объекта в состояние ожидания - PullRequest
0 голосов
/ 11 марта 2011

Есть ли способ перевести семафорный объект в режим ожидания? Например, если мне нужно подождать, пока количество разрешений возрастет до определенного числа?

Ответы [ 3 ]

2 голосов
/ 11 марта 2011

Просто используйте Semaphore.acquire (int permissions) . Он будет ждать, пока не будет доступно permits разрешений.

Если вы хотите быть уверены, что ни один из последующих потоков не сможет "украсть" разрешения, поэтому он требует разрешений next available permits, создайте семафор с fair, установленным в true.

0 голосов
/ 11 марта 2011

Извините, я не понял, что вы пытались сделать. Похоже, CyclicBarrier будет лучшим механизмом в этом случае.

0 голосов
/ 11 марта 2011

Посмотрите пример по этой ссылке http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html. вы можете добавить условие в метод getNextAvailableItem (), чтобы дождаться увеличения количества разрешений до определенного количества примеров в ссылке.Поделитесь подробностями / описанием вашей проблемы.

...