写出三种单例模式实现?
时间: 2023-01-20 23:30:33 知识小顽童
- 饿汉式单例模式:在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快。
Copy codepublic class HungrySingleton {
private static final HungrySingleton instance = new HungrySingleton();
private HungrySingleton() {}
public static HungrySingleton getInstance() {
return instance;
}
}
- 懒汉式单例模式:在第一次使用时进行初始化,节省了资源,但第一次加载时反应稍慢一些。
Copy codepublic class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {}
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
- 双重检查锁式单例模式:懒汉式的升级版本,既节省了资源,又保证了第一次加载时的速度。
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关键字在高并发环境下会有问题