Есть ли способ перевести семафорный объект в режим ожидания? Например, если мне нужно подождать, пока количество разрешений возрастет до определенного числа?
Просто используйте Semaphore.acquire (int permissions) . Он будет ждать, пока не будет доступно permits разрешений.
permits
Если вы хотите быть уверены, что ни один из последующих потоков не сможет "украсть" разрешения, поэтому он требует разрешений next available permits, создайте семафор с fair, установленным в true.
fair
Извините, я не понял, что вы пытались сделать. Похоже, CyclicBarrier будет лучшим механизмом в этом случае.
Посмотрите пример по этой ссылке http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html. вы можете добавить условие в метод getNextAvailableItem (), чтобы дождаться увеличения количества разрешений до определенного количества примеров в ссылке.Поделитесь подробностями / описанием вашей проблемы.