是否有将信号量obj置于等待模式的方法?例如,如果我需要等待许多许可证才能升到一定数量?将信号量obj置于等待状态的方式
回答
只需使用Semaphore.acquire(int permits)。它将等待,直到有permits
许可证可用。
如果你想以确保没有其他线程晚些时候推出可以“偷”许可证,所以它需要的下一个可用permits
许可证,创建信号量与fair
设置为true。
请查看此链接的示例http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html。您可以在getNextAvailableItem()方法中添加条件以等待许可证的数量上升到链接中的一定数量的示例。分享有关您的问题的更多详情/说明。
对不起,我不明白你想要做什么。听起来像CyclicBarrier在这种情况下会是一个更好的机制。
你能否提供一个工作示例? – 2011-03-11 13:09:06
感谢编辑,但这不会让我给他们(线程)成对访问一个对象。对不起,我没有说明这是我的OP。我需要的是只有两个线程才能访问一个对象,并且只有在这两个线程完成这个对象后,另外两个线程才能访问它。再次抱歉,不要在OP中进行specyfing。 – 2011-03-11 13:40:05
- 1. dispatch_semaphore_wait不等待信号量
- 2. 信号量等待案例
- 3. 等待信号
- 4. 等待信号
- 5. 将调用线程置于可警告等待状态
- 6. 等待的线程数和信号量
- 7. 调度等待信号量的进程
- 8. 等待GPS信号
- 9. 处于等待状态的TP-Processorxx
- 10. 跨线程事件信号(Obj-C)的同步/等待设计?
- 11. 信号量等待()在多核
- 12. 等待队列VS信号量在linux
- 13. 做信号量满足有界等待
- 14. 尝试等待信号量时出错
- 15. 信号量不会彼此等待
- 16. QEventLoop用于同步等待信号
- 17. 等待(空)和等待(&状态)C语言和状态
- 18. 处于等待状态的HTTP线程数量非常多
- 19. 等待/信号(信号量)如何实现伪代码“工作”?
- 20. 信号量或锁等待列表服务于LIFO命令
- 21. 当父亲处于等待信号量时避免僵尸
- 22. 有限等待信号灯
- 23. GWT - 睡眠\等待信号?
- 24. Spark Streaming - 批量处于等待状态,应用程序无效
- 25. 信号量等待事件触发窗口形式
- 26. Elasticsearch等待索引状态
- 27. AsyncTask进入等待状态
- 28. 等待后检查状态()
- 29. 等待状态解析(NGRX)
- 30. Android呼叫等待状态
无法显示链接。 – 2011-03-11 10:56:48
更新了链接。 – Samra 2011-03-11 10:59:25
这并不显示如何将信号置于“等待”状态。只要有一个许可证可用,信号量就会让它通过,但我需要一些信号量会阻塞的东西,直到至少有n个许可证可用。 – 2011-03-11 11:09:59