学习资源网 问答 写出三种单例模式实现?

写出三种单例模式实现?

时间: 2023-01-20 23:30:33  知识小顽童
  1. 饿汉式单例模式:在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快。
Copy codepublic class HungrySingleton {
    private static final HungrySingleton instance = new HungrySingleton();
    private HungrySingleton() {}
    public static HungrySingleton getInstance() {
        return instance;
    }
}
  1. 懒汉式单例模式:在第一次使用时进行初始化,节省了资源,但第一次加载时反应稍慢一些。
Copy codepublic class LazySingleton {
    private static LazySingleton instance;
    private LazySingleton() {}
    public static synchronized LazySingleton getInstance() {
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }
}
  1. 双重检查锁式单例模式:懒汉式的升级版本,既节省了资源,又保证了第一次加载时的速度。
Copy codepublic class DoubleCheckSingleton {
    private volatile static DoubleCheckSingleton instance;
    private DoubleCheckSingleton() {}
    public static DoubleCheckSingleton getInstance() {
        if (instance == null) {
            synchronized (DoubleCheckSingleton.class) {
                if (instance == null) {
                    instance = new DoubleCheckSingleton();
                }
            }
        }
        return instance;
    }
}

注意:如果只加synchronized关键字在高并发环境下会有问题

学习考试资源网-58edu © All Rights Reserved.  湘ICP备12013312号-3 
站点地图| 免责说明| 合作请联系| 友情链接:学习乐园