单例模式
单例模式是一种常见的设计模式,而关于单例模式的实现又有以下几种实现方式:饿汉单例,懒汉单例,双重校验锁,静态内部类等实现
饿汉单例
该懒汉单例是线程安全的,但是存在资源浪费的情况,在程序启动时就会创建该类的实例。
/*** @author: dlwlrma* @data 2025年01月15日 16:34* @Description 单例模式之懒汉单例*/
public class Singleton {//私有静态成员变量,在使用时才会创建实例private static Singleton instance = new Singleton();//私有构造方法private Singleton() {}//唯一的公共访问点public static Singleton getInstance(){return instance;}
}
懒汉单例
/*** @author: dlwlrma* @data 2025年01月15日 16:40* @Description 懒汉单例*/
public class Singleton {//私有静态成员变量,初始化为nullprivate static Singleton instance = null;//私有构造器private Singleton() {}//获取唯一可用实例,先判断是否已经创建实例,如果没有创建,则创建实例public static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}
双重校验锁(DLC)
/*** @author: dlwlrma* @data 2025年01月15日 16:50* @Description 双重校验锁*/
public class Singleton {private volatile static Singleton instance = null;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}
静态内部类
/*** @author: dlwlrma* @data 2025年01月15日 16:55* @Description 静态内部类*/
public class Singleton{private Singleton(){}private static class SingletonHolder{private static final Singleton instance = new Singleton();}public static Singleton getInstance(){return SingletonHolder.instance;}
}