设计模式-创建型模式单例模式

版权声明:fromZjy QQ1045152332 https://blog.csdn.net/qq_36762677/article/details/83280371

设计模式: 代码重复利用,易于扩展


单例模式

保证jvm中只能有一个实例

懒汉式⭐️

线程不安全,需要的时候创建

class Singleton{
	//需要时才创建对象	
	private static Singleton singleton;
	
	//构造方法私有化
	private Singleton(){
	}
	
	//保证返回一个实例
	public static Singleton getInstanse(){
		if(singleton == null){
		    //此处容易发生多线程不安全问题
			synchronized (Singleton.class){
				if(singleton == null){//再次检验,双重检验锁
					singleton = new Singleton();
				}
			}
		}
		//如果不是null,无线程安全问题
		return singleton;
	}
}

饿汉式

天然线程安全,jvm class loder的时候已经就初始化了

  • 描述:这种方式比较常用,但容易产生垃圾对象。
  • 优点:没有加锁,执行效率会提高。
  • 缺点:类加载时就初始化,浪费内存。
    它基于 classloder 机制避免了多线程的同步问题,
    不过,instance 在类装载时就实例化,虽然导致类装载的原因有很多种,
    在单例模式中大多数都是调用 getInstance 方法,
class Singleton{
	private static Singleton singleton = new Singleton();
	
	//构造方法私有化
	private Singleton(){
	}
	
	//保证返回一个实例
	public static Singleton getInstanse(){
		return singleton;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_36762677/article/details/83280371