我正在尝试理解单例设计模式。它说jvm中只创建了一个对象。但我想了解这在基于云的环境中是如何工作的。另外创建了多少个对象?
最佳答案
单例对象是在单个 Java 进程的上下文中创建的,并在单个 JVM 实例中运行。与进程和JVM是运行在本地物理机,还是运行在容器中,还是运行在云端的虚拟机无关。
此外,即使在同一台机器上,同一进程的多个实例也会各自生成自己的单例对象实例。单例并没有什么神奇之处,可以导致单独的进程共享单例实例。
创建单例对象的最典型方法是让类型的静态成员引用对象的实例。由于类型仅由 JVM 构造一次,因此这意味着对相应对象的单个唯一引用(尽管在一般意义上没有什么可以阻止创建该对象的多个实例)。
回到你原来的问题 - 假设“基于云的环境”是指部署在多台机器上并通过网络连接的分布式应用程序 - 然后,默认情况下,每台运行该进程的机器都会获得自己独立的“单例”的实例,除非有一些其他分布式数据结构作为“单例”的基础以使它们共享状态等。
顺便说一句 - 你没有问,但是:What is so bad about singletons?
关于java - 在云环境中创建的单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317971/