在我编写每个客户端处理程序对象的服务器中包含一些用法的信号量,因为可能有许多客户端处理程序 - 我想知道程序可以容纳的信号量数量是否有限制?
答案 0 :(得分:0)
java.util.concurrent.Semaphore
是标准Java对象,因此与堆中的每个其他对象具有相同的限制。所以,只要你有足够的内存,实例化更多Semaphores
应该没有问题。
我觉得很奇怪你需要这么大的数字才能考虑这是否会导致问题。通常,并发程序只有少数关键部分必须由不同的信号量保护,而Java中的大多数数据结构都有Threadsafe替代方案,这使得您的生活比手动同步更容易。
答案 1 :(得分:0)
操作系统确实限制了应用程序层可以创建的信号量实例的数量。达到此限制,不再有线程处于等待状态。此编号特定于操作系统。这是link for Windows。