java 单例

发布时间 2023-03-30 00:24:36作者: elegydance
  1. 饿汉式单例模式:与 C# 中的实现方式相似,在程序启动时就创建单例对象,并在整个程序运行期间使用该对象。该方式比较简单,但是可能会影响程序的性能,因为即使不需要使用该对象,它也会一直存在于内存中。

以下是一个使用饿汉式单例模式的示例代码:

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

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}
View Code
  1. 懒汉式单例模式:与 C# 中的实现方式相似,在需要使用单例对象时才创建单例对象。需要注意的是,在多线程的环境中需要考虑线程安全问题。

以下是一个使用懒汉式单例模式的示例代码:

public class Singleton {
    private static Singleton instance = null;

    private Singleton() {}

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

 

该实现方式在单线程的环境中是可行的,但是在多线程的环境中会有并发安全问题,因为多个线程可能同时调用 getInstance 方法,导致创建多个实例。可以通过加锁的方式解决该问题,但是会影响程序的性能。为了避免这种情况,可以使用双重检查锁定或者静态内部类的方式实现懒汉式单例模式。