Java Singleton 类如何实现延迟加载

发布时间:2025-02-05 16:11:15 作者:小樊
来源:亿速云 阅读:84

在 Java 中,延迟加载(Lazy Initialization)是一种优化技术,用于在需要时才初始化对象。对于 Singleton 类,延迟加载意味着实例在首次访问时才被创建。这可以减少应用程序启动时间和内存占用。要实现延迟加载的 Singleton 类,可以使用以下方法之一:

方法 1:使用静态内部类

public class Singleton {
    private Singleton() {
        // 私有构造函数,防止外部实例化
    }

    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}

方法 2:使用枚举

public enum Singleton {
    INSTANCE;

    // 添加其他方法
    public void someMethod() {
        // ...
    }
}

方法 3:双重检查锁定(Double-Checked Locking)

public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {
        // 私有构造函数,防止外部实例化
    }

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

方法 4:使用 Bill Pugh Singleton 实现

public class Singleton {
    private static final Singleton INSTANCE = new Singleton();

    private Singleton() {
        // 私有构造函数,防止外部实例化
    }

    public static Singleton getInstance() {
        return INSTANCE;
    }
}

以上四种方法都可以实现延迟加载的 Singleton 类。方法 1 和方法 3 是线程安全的,而方法 2 和方法 4 在多线程环境下也是安全的。你可以根据项目需求和性能要求选择合适的方法。

推荐阅读:
  1. java单例模式如何写
  2. Java单例模式的使用示例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:如何优化系统以通过压力测试

下一篇:Postman的安全性如何保障

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》