2

在我编写的服务器中,每个客户端处理程序对象都包含一个用于某些用途的信号量,因为可以有许多客户端处理程序 - 我想知道程序可以容纳的信号量数量是否有限制?

4

2 回答 2

0

Ajava.util.concurrent.Semaphore是一个标准的 Java 对象,因此与堆中的所有其他对象具有相同的限制。因此,只要您有足够的内存,实例化 more 应该没有问题Semaphores

我觉得奇怪的是,您需要如此大的数字,以至于您甚至会考虑这是否会导致问题。通常,并发程序只有少数几个关键部分必须由不同的信号量保护,并且 Java 中的大多数数据结构都有 Threadsafe 替代方案,这使您的生活比手动同步它们更容易。

于 2012-07-13T09:42:10.993 回答
0

操作系统确实限制了应用层可以创建的信号量实例的数量。一个达到这个限制,没有更多的线程可以处于等待状态。此数字特定于操作系统。这是Windows 的链接

于 2012-07-16T07:53:10.153 回答