Java单例模式复习(三)
心血来潮,在学学单例模式,以下是代码块:具备前面两种实现方式,
package singleton;
public class SingletonStatic {
private SingletonStatic() {
System.out.println("static SingletonStatic is create");
}
private static class SingletonHander {
private static SingletonStatic instance = new SingletonStatic();
}
public static SingletonStatic getInstance() {
return SingletonHander.instance;
}
}
/**
* 当SingletonStatic 被加载的时候,起内部类不会被初始化,所以当SingletonStatic类被载入JVM时,不会初始化单例类,
* 而当getInstance()方法被调用时,才会加载SingletonHander,而初始化instance,由于实例的建立是在类加载完成时完成,
* 所以对线程友好的,故不需要使用synchronized关键字修饰,这中方式兼备了前面两种单例模式存在的问题,
* 但是也还有其他情况,可能导致系统产生多个实例,比如通过反射机制,强行调用单例类的私有构造函数,生成多个单例,等
*/
欢迎关注公众号:Java后端技术全栈