其他分享
首页 > 其他分享> > 单例模式

单例模式

作者:互联网

饿汉式

// 饿汉式
// 优点:没有线程安全问题
// 缺点:提前实例化,暂用内存空间
public class HungerSingleton {

    private HungerSingleton(){};

    private static final HungerSingleton instance= new HungerSingleton();

    public static HungerSingleton getInstance(){
        return instance;
    }
}

懒汉式

// 懒汉式
// 优点:用到再加载,不占用内存

public class LazySingleton {// 缺点:有线程安全问题

    private LazySingleton(){};

    private static LazySingleton instance= null;

    public static LazySingleton getInstance(){
        if(null==instance){
            instance= new LazySingleton();
        }
        return instance;
    }

}


public class LazySingleton {// 缺点:多线程访问有安全问题

    private LazySingleton(){};

    private static LazySingleton instance= null;

    public static LazySingleton getInstance(){
        if(null==instance){
            // 多线程同时进入会重复创建
            synchronized (LazySingleton.class){
                instance= new LazySingleton();
            }
        }
        return instance;
    }

}

public class LazySingleton {// 使用双重验证保证只实例化一次

    private LazySingleton(){};

    private static LazySingleton instance= null;

    public static LazySingleton getInstance(){
        if(null==instance){
            synchronized (LazySingleton.class){
                if(null==instance) {
                    instance= new LazySingleton();
                }
            }
        }
        return instance;
    }

}

 

标签:LazySingleton,private,instance,static,模式,单例,null,public
来源: https://blog.csdn.net/DavidSoCool/article/details/88552297