单例就是只有一个实例。也就是说一个类在全局中最多只有一个实例存在。
单例模式一般用在对实例数量有严格要求的地方,比如数据池,线程池,缓存,session回话等等。
//线程不安全
public class Singleton{
public static Singleton unsingleton;
private Singleton(){};
public static Singleton Instance(){
if(unsingle==null){
unsingle =new Singleton()
}else{
return unsingleton;
}
}
}
//线程安全的
public class Singleton {
private static Singleton unsingleton=new Singleton();
private Singleton(){}
public static Singleton Instance(){
return unsingleton;
}
}
双重锁机制
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;
}
}
静态类部类
public class Singleton {
private Singleton(){}
// 只有当类被调用时,才会加载
private static class SingletonHolder{
// 静态初始化器,由JVM来保证线程安全
private static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.instance;
}
}
枚举
public enum Singleton{
Instance;
//下面写方法什么的
//枚举是最安全的·
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务