https://juejin.cn/post/7325069743143157801

懒加载(Lazy Loading),也称为延迟加载,是一种设计模式,通常用于延迟对象的创建或者某些计算,直到它的第一次使用或实际需要之时。在单例模式中,懒加载意味着单例实例将在第一次需要时创建,而不是在应用程序启动时。

这样做有几个好处:

  1. 资源利用率提高:避免了在启动时创建不会立即使用的对象,从而减少了应用程序的启动时间和内存占用。
  2. 性能优化:如果对象从未被使用,则不会创建,从而节省资源。
  3. 控制实例化时间:可以更好地控制实例化的过程和时间点。

在 Java 中,实现单例模式的懒加载通常有多重方式,这里举例两种常见的实现:

1. 懒汉式(线程不安全)

这是最基本的懒加载实现方式。它在类装载时不创建实例,而在需要时创建实例。

public class LazySingleton {
    private static LazySingleton instance;

    private LazySingleton() {
    }

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

该方法的缺点是它不是线程安全的。如果多个线程同时访问getInstance()方法,可能会创建多个实例。

2. 懒汉式(线程安全)