单例设计模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象、且对象创建成本较高时非常有用。
在 Java 中,实现线程安全的单例模式有多种方法。以下是几种常见的方法:
这种方式在类加载时就完成了初始化,因此是线程安全的,但可能会导致资源浪费。
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {
// 私有构造函数
}
public static Singleton getInstance() {
return INSTANCE;
}
}
这种方式在多线程环境下也能保证线程安全,同时延迟了实例的创建。
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;
}
}
这种方式既保证了线程安全,又避免了资源浪费,而且实现了延迟初始化。
public class Singleton {
private Singleton() {
// 私有构造函数
}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
这种方式不仅线程安全,还能防止反序列化重新创建新的对象。
public enum Singleton {
INSTANCE;
public void doSomething() {
// 业务逻辑
}
}
// 使用
Singleton.INSTANCE.doSomething();
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。