Java 如何在所有类装入器中生成一个单例?

Java 如何在所有类装入器中生成一个单例?,java,playframework,singleton,Java,Playframework,Singleton,我尝试了所有建议的解决方案,包括: 但这些似乎都不起作用。它们不是所有类加载器中真正的单例(上面的第一个链接),而是在应用程序重新加载时产生不同的实例(我使用Play Framework 1.3.x,它在代码更改和重新编译时重新加载类),或者它们要求类位于系统类路径上 有解决办法吗?我希望该类被加载一次,甚至在使用新的类加载器重新加载类之后,仍然具有该类的同一个实例 这是可能的吗?如果您不能将类放在系统类路径上,那么我相信在单实例由多个线程同时实例化的情况下,您将始终存在争用条件。在一个

我尝试了所有建议的解决方案,包括:

但这些似乎都不起作用。它们不是所有类加载器中真正的单例(上面的第一个链接),而是在应用程序重新加载时产生不同的实例(我使用Play Framework 1.3.x,它在代码更改和重新编译时重新加载类),或者它们要求类位于系统类路径上

有解决办法吗?我希望该类被加载一次,甚至在使用新的类加载器重新加载类之后,仍然具有该类的同一个实例


这是可能的吗?

如果您不能将类放在系统类路径上,那么我相信在单实例由多个线程同时实例化的情况下,您将始终存在争用条件。在一个已知的根位置上必须有某种东西可以被静态识别作为锚,或者至少有一个监视器来防止竞争状况。你为什么需要它?这里的问题是什么?这是重复的吗?为什么在扩展类加载器中有它是一个问题?对我来说,这是唯一的选择way@NicolasFilotto如何以编程方式将其加载到那里?或者你把类放在那个目录中吗?如果你不能把类放在系统类路径上,那么我相信在单实例被多个线程同时实例化的情况下,你总是会有一个竞争条件。在一个已知的根位置上必须有某种东西可以被静态识别作为锚,或者至少有一个监视器来防止竞争状况。你为什么需要它?这里的问题是什么?这是重复的吗?为什么在扩展类加载器中有它是一个问题?对我来说,这是唯一的选择way@NicolasFilotto如何以编程方式将其加载到那里?或者你把这些类放在那个目录里?