标签:检查 class 锁定 return on() row 懒加载 全局 vat
解决问题:确保一个类最多只有一个实例,并提供一个全局访问点
实现步骤:
1.构造方法私有化,(仅本类才可以调用)
2.声明一个本类对象
3.给外部提供一个静态方法获取对象实例(静态方法通过类即可调用)
两种实现方式:1.懒汉式 2.饿汉式
// 懒汉式(懒加载,延迟加载)
// 第一次调用getInst()方法时,对象被创建,程序结束后释放
public class Singleton {
private Singleton() {
}
private static Singleton inst = null;
public static Singleton getInst() {
if (null == inst) {
inst = new Singleton();
}
return inst;
}
}
// 饿汉式
//类被加载后,对象被创建,程序结束后释放
public class Singleton {
private Singleton() {
}
private static Singleton inst = new Singleton();
public static Singleton getInst() {
return inst;
}
}
懒汉式 优化 解决安全问题
// 懒汉式(懒加载,延迟加载)
// 双重锁定检查 实现线程安全
public class Singleton {
// 拒绝通过反射调用
private Singleton() {
if(null !=inst){
throw new RuntimeException("此类为单例模式");
}
}
//volatile关键字保证变量的唯一性
private volatile static Singleton inst = null;
public static Singleton getInst() {
if (null == inst) {
synchronized (Singleton.class) {
if (null == inst) {
inst = new Singleton();
}
}
}
return inst;
}
}
标签:检查 class 锁定 return on() row 懒加载 全局 vat
原文地址:https://www.cnblogs.com/vixviy/p/11788993.html