懒汉式单例模式的线程安全实现
懒汉式单例模式的线程安全实现
懒汉式单例模式的核心特点是延迟实例化(在第一次使用时创建对象),但其基础实现存在线程安全问题。以下是不同线程安全实现方式的详细说明和对比:
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