懒汉式单例模式的线程安全实现
懒汉式单例模式的核心特点是延迟实例化(在第一次使用时创建对象),但其基础实现存在线程安全问题。以下是不同线程安全实现方式的详细说明和对比:
1. 非线程安全的基础懒汉式
public class UnsafeLazySingleton {
private static UnsafeLazySingleton instance;
private UnsafeLazySingleton() {
}
public static UnsafeLazySingleton getInstance() {
if (instance == null) {
instance = new UnsafeLazySingleton(); // 多线程环境下可能创建多个实例
}
return instance;
}
}
- 问题:多线程同时通过
if (instance == null)
检查时,会创建多个实例。
2. 同步方法(线程安全但低效)
public class SyncLazySingleton {
private static SyncLazySingleton instance