You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

何时应优先使用懒加载单例(Lazy Singleton)而非普通单例?

嘿,我来帮你把这些内容整理得清晰易懂,同时贴合你的实际需求~

单例模式的两种常见实现

1. 饿汉式(普通单例)

这种方式会在类加载时就初始化实例,属于立即加载,简单且线程安全:

public class Singleton {
    private static Singleton instance;
    static {
        instance = new Singleton();
    }
    private Singleton() { // 私有构造方法,避免外部随意实例化
    }
    public static Singleton getInstance() {
        return instance;
    }
}

2. 懒加载单例(静态内部类实现)

这种方式利用Java类加载机制实现延迟加载——只有在调用getInstance()时才会初始化实例,既保证懒加载又天然线程安全:

public class Singleton {
    private Singleton() { // 私有构造方法
    }
    private static class Holder {
        static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance() {
        return Holder.INSTANCE;
    }
}

上述代码来自某讨论帖及用户分享。

我之前尝试过的两种实现方式
  • 直接使用静态变量声明:
static MyClass instance;
  • 通过实例传递的方式(比如在插件启动场景中):
MyClass instance;
@Override
public void onEnable() {
    instance = this;
}
// 在其他类中通过构造器接收实例
public OtherClass(MyClass myClass) {
    this.instance = myClass;
}
我的核心需求

我最近才开始学习单例模式,最终想实现的是主类和其他类之间的变量共享——目前正在学习File和FileConfiguration的正确用法,希望能让这些对象在各个类里轻松访问到。

如果我表现出新手的特征,请优先给我解决这个问题的具体方案/示例,不用先让我去系统学Java哦~

内容的提问来源于stack exchange,提问作者VeeAyeInIn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:37:13