在多个部署的情况下创建的单例实例的数量 [重复]

Posted

技术标签:

【中文标题】在多个部署的情况下创建的单例实例的数量 [重复]【英文标题】:Number of singleton instances created in case of multiple deployments [duplicate] 【发布时间】:2016-03-08 08:15:34 【问题描述】:

我想知道将创建多少个单例实例,以防在同一台机器上使用不同的输入参数多次部署包含单例类的代码。 另外我想知道JVM将如何处理这种情况。这种情况下会创建多个JVM实例吗?

【问题讨论】:

如果要创建多个 JVM,每个 JVM 都会有一个单例实例。 【参考方案1】:

多个 JVM 之间没有联系 - 它们具有完全独立的状态(除非您添加某种机制使它们显式通信,或者访问共享状态,例如从同一个数据库或文件)。

因此,一个 JVM 无法知道另一个 JVM 是否有一个单例实例(甚至使用单例类)。这意味着每个 JVM 将有一个单例实例。

【讨论】:

如果只有一个 JVM 会发生什么。并且同一应用程序在一个 JVM 中多次部署?【参考方案2】:

每个唯一的类加载器都会有一个 Singleton 类的实例,即使它们在同一个 JVM 中。在您的情况下,由于在同一个 JVM 上有多个部署,每个部署都将使用其版本的类加载器来创建单例。因此,您将在 JVM 上拥有多个单例实例。

【讨论】:

【参考方案3】:

单例对象意味着只允许一个实例。所以不存在创建多个实例的问题。 如果你创建这个单例类的新对象,总是返回创建的第一个对象。

【讨论】:

以上是关于在多个部署的情况下创建的单例实例的数量 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++中的单例模式

如何创建一个完美的单例模式

Python下简易的单例模式详解(转)

多线程下的单例模式详解

js设计模式之单例模式实例

设计模式-单例模式