将 Semaphore obj 置于等待状态的方法
有没有办法让 Semaphore obj 进入等待模式?例如,如果我需要等待许可证数量上升到一定数量?
Is there a way of putting Semaphore obj into a wait mode? For example, if I need to wait for a numbers of permits to rise to a certain number?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只需使用 信号量.acquire(int 允许)。它将等待,直到有可用的
许可
许可。如果您想确保以后没有其他线程可以“窃取”许可,因此它需要下一个可用
许可
许可,请使用fair<创建信号量/code> 设置为 true。
Just use Semaphore.acquire(int permits). It will wait until there are
permits
permits available.If you want to be sure that no other thread coming later can "steal" permits, so it takes the next available
permits
permits, create the Semaphore withfair
set to true.请查看此链接中的示例 http ://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html。您可以在 getNextAvailableItem() 方法中添加条件来等待许可数量达到链接中的特定数量示例。分享有关您的问题的更多详细信息/描述。
Please check out the example at this link http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html. you can add the condition in getNextAvailableItem() method to wait for number of permits to rise to a certain number of example in the link. Share more details/description about your problem.
抱歉,我不明白你想做什么。听起来 CyclicBarrier 将是一个在这种情况下有更好的机制。
Sorry I didn't understand what you were trying to do. It sounds like CyclicBarrier would be a better mechanism in this case.