設計模式-單例模式之懶漢式-多執行緒

ZHOU_VIP發表於2017-06-04

package cn.itcast_03;

/*
 * 單例模式:
 * 		餓漢式:類一載入就建立物件
 * 		懶漢式:用的時候,才去建立物件
 * 
 * 面試題:單例模式的思想是什麼?請寫一個程式碼體現。
 * 
 * 		開發:餓漢式(是不會出問題的單例模式)
 * 		面試:懶漢式(可能會出問題的單例模式)
 *          思想:
 * 			A:懶載入(延遲載入),用的時候才去載入
 * 			B:執行緒安全問題
 * 				a:是否多執行緒環境	是
 * 				b:是否有共享資料	是
 * 				c:是否有多條語句操作共享資料 	是
 */
public class Teacher {
	private Teacher() {
	}

	private static Teacher t = null;

	public synchronized static Teacher getTeacher() {
		// t1,t2,t3
		if (t == null) {
			//t1,t2,t3
			t = new Teacher();
		}
		return t;
	}
}


package cn.itcast_03;

public class TeacherDemo {
	public static void main(String[] args) {
		Teacher t1 = Teacher.getTeacher();
		Teacher t2 = Teacher.getTeacher();
		System.out.println(t1 == t2); // true
		System.out.println(t1); // cn.itcast_03.Teacher@175078b
		System.out.println(t2); // cn.itcast_03.Teacher@175078b
	}
}

相關文章