前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式

Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式

原创
作者头像
代码小李
发布2025-02-03 15:46:18
发布2025-02-03 15:46:18
420
举报

单例设计模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象、且对象创建成本较高时非常有用。

在 Java 中,实现线程安全的单例模式有多种方法。以下是几种常见的方法:

1. 饿汉式(静态常量)

这种方式在类加载时就完成了初始化,因此是线程安全的,但可能会导致资源浪费。

代码语言:java
复制
public class Singleton {
    private static final Singleton INSTANCE = new Singleton();

    private Singleton() {
        // 私有构造函数
    }

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

2. 懒汉式(双重检查锁定)

这种方式在多线程环境下也能保证线程安全,同时延迟了实例的创建。

代码语言:java
复制
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;
    }
}

3. 静态内部类

这种方式既保证了线程安全,又避免了资源浪费,而且实现了延迟初始化。

代码语言:java
复制
public class Singleton {
    private Singleton() {
        // 私有构造函数
    }

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

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

4. 枚举

这种方式不仅线程安全,还能防止反序列化重新创建新的对象。

代码语言:java
复制
public enum Singleton {
    INSTANCE;

    public void doSomething() {
        // 业务逻辑
    }
}

// 使用
Singleton.INSTANCE.doSomething();

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 饿汉式(静态常量)
  • 2. 懒汉式(双重检查锁定)
  • 3. 静态内部类
  • 4. 枚举
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档