java - 关于单例模式多ClassLoader问题解决方法的疑问
阿神
阿神 2017-04-18 09:44:45
0
2
388

在这里查看单例模式的讲解:http://cantellow.iteye.com/bl... 后面总结中有下面一个问题以及解决的方案,但我不太懂是什么意思,麻烦大神给解答下,谢谢~

问题:

1.如果单例由不同的类装载器装入,那便有可能存在多个单例类的实例。假定不是远端存取,例如一些servlet容器对每个servlet使用完全不同的类装载器,这样的话如果有两个servlet访问一个单例类,它们就都会有各自的实例。

private static Class getClass(String classname) throws ClassNotFoundException {     
      ClassLoader classLoader = Thread.currentThread().getContextClassLoader();     
      
      if(classLoader == null)     
         classLoader = Singleton.class.getClassLoader();     
      
      return (classLoader.loadClass(classname));     
   }     
}  
阿神
阿神

闭关修行中......

모든 응답(2)
刘奇

모든 클래스에 대해 이를 로드하는 클래스 로더와 클래스 자체는 Java 가상 머신에서 고유성을 설정해야 합니다. 따라서 여러 클래스를 로드하기 위해 서로 다른 클래스 로더를 사용하는 경우 이러한 인스턴스는 동일하게 작동하지만 JVM에 대해서는 서로 다른 클래스의 인스턴스입니다. 이전에 이 문제를 설명하는 기사를 작성한 적이 있으므로 참고하시면 도움이 될 것입니다.

https://segmentfault.com/a/11...

Peter_Zhu

어떤 부분을 이해하지 못하시는지 모르겠습니다. 클래스 로딩 프로세스, 클래스 로더의 상위 위임 메커니즘

을 배워야 할 수도 있다고 추측할 수 있습니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿