java 单例模式

饿汉式单例模式

public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton() {
        // 私有构造方法,防止外部创建实例
    }

    public static Singleton getInstance() {
        return instance;
    }

    // 其他业务方法
}

在这个实现方式中,单例实例在类加载的时候就会被创建,因为实例是私有的静态成员变量,并且在类内部创建,所以是线程安全的。

懒汉式单例模式

public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // 私有构造方法,防止外部创建实例
    }

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

    // 其他业务方法
}

在这个实现方式中,单例实例在第一次调用getInstance()方法时才会被创建。通过synchronized关键字可以确保在多线程环境下的线程安全,但每次调用getInstance()方法都需要进行同步,可能会影响性能。

双重检查锁单例模式

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;
    }

    // 其他业务方法
}

在这个实现方式中,通过双重检查锁的方式来确保只有在实例为null时才进行同步创建实例。使用volatile关键字可以防止指令重排序,确保实例的初始化不会出现问题。

这些是Java中常见的单例模式实现方式。根据具体需求和场景,选择适合的单例模式实现方法。希望对您有所帮助!