java - 在云环境中创建的单例对象

标签 java

我正在尝试理解单例设计模式。它说jvm中只创建了一个对象。但我想了解这在基于云的环境中是如何工作的。另外创建了多少个对象?

最佳答案

单例对象是在单个 Java 进程的上下文中创建的,并在单个 JVM 实例中运行。与进程和JVM是运行在本地物理机,还是运行在容器中,还是运行在云端的虚拟机无关。

此外,即使在同一台机器上,同一进程的多个实例也会各自生成自己的单例对象实例。单例并没有什么神奇之处,可以导致单独的进程共享单例实例。

创建单例对象的最典型方法是让类型的静态成员引用对象的实例。由于类型仅由 JVM 构造一次,因此这意味着对相应对象的单个唯一引用(尽管在一般意义上没有什么可以阻止创建该对象的多个实例)。

回到你原来的问题 - 假设“基于云的环境”是指部署在多台机器上并通过网络连接的分布式应用程序 - 然后,默认情况下,每台运行该进程的机器都会获得自己独立的“单例”的实例,除非有一些其他分布式数据结构作为“单例”的基础以使它们共享状态等。

顺便说一句 - 你没有问,但是:What is so bad about singletons?

关于java - 在云环境中创建的单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317971/

相关文章:

java - 在我的应用程序的 ListView 上查看 GoogleDrive 文件

java - Intellij 单类编译不反射(reflect) .java 文件状态

java - 如何针对多种模式验证输入日期?

java - 使用 JDK6 的 JBOSS 5.1 中的 Web 服务客户端

java - 使用 Java 11(而不是 1.8)进行 xsl-fo 转换要慢得多

java - 除了 ConcurrentModificationException 之外,这段代码还能抛出任何其他异常吗?

java - 获取结果集的连续 2 行

java - 在多个服务之间重用 CXF jaxb 上下文

用于在应用程序之间委派任务的 Java 企业架构

java - 从 XML 中提取 SVG。选择哪个 Java XML API?