更改对不同类加载器加载的单例类的影响

Posted

技术标签:

【中文标题】更改对不同类加载器加载的单例类的影响【英文标题】:Impact of changes on singleton class loaded by different classloaders 【发布时间】:2014-05-03 19:28:53 【问题描述】:

如果我在不同的类加载器上有多个单例类实例 如果我在任何这些情况下对参考变量进行了修改。

例如,如果我向 Hashmap 添加/删除元素

更改/修改是否也会影响其他类加载器上的实例?

【问题讨论】:

【参考方案1】:

单例是每个类加载器。因此更改不会影响使用其他类加载器加载的其他实例。

有几个很好的参考:

on Singleton and different classloaders on Static members and different classloaders

【讨论】:

【参考方案2】:

您的“单例”是每个 JVM 一个实例。

这是一篇很好的文章,讨论了类加载器、不同类加载器之间的关系以及与 JVM 的关系:

http://javapapers.com/core-java/java-class-loader/

【讨论】:

谢谢!期待你的答复。我了解类加载器规则的概念以及不同类加载器之间的关系。 Singleton 每个类加载器只有一个实例,jvm 可以有多个类加载器,对吗?我的问题是,如果我对一个实例进行任何更改,是否会影响其他类加载器中的其他实例。 另外两个参考:Singleton class with several different classloaders 和 When is a Singleton not a Singleton?

以上是关于更改对不同类加载器加载的单例类的影响的主要内容,如果未能解决你的问题,请参考以下文章

如何从视图/单例类保存/加载属性

IoDH 实现的单例模式

RMI 通信期间单例类的序列化

对象的创建

Flink的类加载器解析

设计模式之单例模式