可以创建多少个Java信号量实例?

时间:2020-11-09 02:05:07

标签: java semaphore

我正在使用信号量来通知生产者线程另一个(消费者)线程已完成共享数据/对象处理。但是我可以创建的信号灯实例总数是否有限制?我想了解一下,是否可以对大量(数十万)对象使用这种同步? 请注意,这是另一个问题-不是关于“信号灯可以拥有的最大许可数量”,因此ity不是重复的。 谢谢

1 个答案:

答案 0 :(得分:2)

尚不确定您可以在Java中创建多少个对象实例。这取决于可用内存。 Semaphore的实现方式尚未定义。如果您的平台施加了限制,那么它可能会比您提出的数十万个更高。

您显然可以尝试一下!编写一个存根程序,该程序仅分配信号量并将其放入ArrayList中(以避免它们被垃圾收集),然后看看会发生什么。

成千上万的数字在大多数环境中都不是“吓人”的数字,但是有许多简化的方法来管理对象种群。例如,“惰性初始化”。在第一次获取时分配一个Semaphore(或在递增计数时释放),并在引用达到零时使引用为空是一种可能的策略,如果您需要大量的“逻辑”,则仅允许实例“正在运行”实际上,这些信号灯中很少有人会流通非默认数量(例如零)的许可证。

相关问题