java单例设计模式之懒汉模式

单例设计模式:顾名思义就是某个对象永远只有一个,绝对不可以出现第二个

单例模式种类:懒汉模式和饿汉模式

懒汉模式:意思就是在你要使用我这个对象的时候,我判断该对象为null的时候我才创建,而不是像饿汉模式一开始就创建好

实现代码展示:

package com.rabbit.pattren;

/**
 * TODO java单例设计模式-懒汉模式
 * create 2017年3月5日 下午9:53:52
 * @author rabbit先生
 */
public class SingletonPattern1 {

	private static SingletonPattern1 sp = null; 
	
	//私有构造不允许私自创建对象
	private SingletonPattern1() { }
	
	//提供方法获取唯一对象
	/**
	 * 特别说明:为什么要使用2次判断null
	 * 首先可以假设使用一个判断情况:就是3和5的代码去掉
	 * 在多线程下首先线程A执行代码1,判断sp对象是null准备创建对象
	 * 但是在这个时候线程B抢到执行1,那么线程B也判断到sp对象是null
	 * 然后线程B创建了对象,并返回了(执行完毕)
	 * 线程B执行完毕,到线程A执行了,我们刚才说到线程A已经判断了sp对象是null,已经执行了1的代码
	 * 线程A继续执行,由于线程A判断sp是null,所有也创建了一个sp对象并返回
	 * 这个时候线程A和B各自创建了一个对象,所有确保不了对象的唯一
	 * 这就是为什么使用2次判断null的原因
	 * 就算出现上面的情况,也会在重新判断一次,只要进入了2的代码那么2-6这段的代码一点会一起执行,别人是抢不了执行的
	 */
	private static SingletonPattern1 getInstance() {
		if (sp == null) {//1
			synchronized (SingletonPattern1.class){//2
				if (sp == null) {//3
					sp = new SingletonPattern1();//4
				}//5
			}//6
		}//7
		return sp;
	}
}


展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie
应支付0元
点击重新获取
扫码支付

支付成功即可阅读