单例设计模式(懒汉式)
单例:保证一个类中有且只有构建一个实例的方式
步骤(懒汉式):
①准备一个私有的静态的当前类型的属性
② 准备一个私有的无参的构造方法
③对外暴露一个获得本类实例的一个静态方法
public calss Emporor{
private static Emporor instance;
private Emporor(){}
public static Emporor getInstance(){
if(instance==null){
synchronized(Emporor.class){
if(instance==null){
instance=new Emporor();
}
}
}
retern instance;
}
}
注意点:
①静态方法加锁,若不加锁,多线程并发访问的前提下,还是存在构建多个实例的可能性
②外层的if是为了提高获取当前单例类实例的效率
③执行完同步代码块后,当前的线程立马释放锁标记,此时,锁标记就有可能被其他线程占据,所以加入内层if
④内层if是确保当前单例类有且只有有一个实例,从安全角度来考虑的