何时应优先使用懒加载单例(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
相关产品推荐
相关产品推荐

