0

可能重复:
用其他方式破解单例

谁能告诉我什么时候 aSingleton不能作为 a 工作Singleton

4

3 回答 3

10

作者Joshua Fox在Sun网站上发表了一篇非常好的文章。请通过这个。

以下是其中一些您的Singleton行为不正常时的情况。

  1. 两个或更多虚拟机中的多个单例
  2. 不同的类加载器同时加载多个单例
  3. 垃圾收集销毁的单例类,然后重新加载
  4. 故意重载单例类
  5. 已经历序列化和反序列化的单例对象的副本
于 2012-07-26T07:06:12.537 回答
3

如果给定的类由多个类加载器加载,则单例(在 Java 领域)将无法作为单例工作。由于单个类可以在多个类加载器中存在(或可以加载),因此对于给定的 JVM 实例,很有可能拥有“假定”单例类的“多个”实例。但这是一个非常罕见的情况,并且不会发生很多。:)

于 2012-07-26T07:05:54.793 回答
0

如果您能够创建多个类的实例,那么它不会通过使用克隆、反序列化等方式保持单例。

于 2012-07-26T07:08:08.043 回答