01 - 단일 모드 [게으름뱅이 이중 검사]

1157 단어 디자인 모드
package com.design.patterns;

/**
 * 
 * @author Fighting
 *            
 * 1.        ,  new  
 * 2.     
 * 3.           ,      
 */
public class DoubleCheckDemo {

	public static void main(String[] args) {
		System.out.println("    ");
		DoubleCheckSingleton lazyNotSafeSingleton = DoubleCheckSingleton.getInstance();
		DoubleCheckSingleton lazyNotSafeSingleton2 = DoubleCheckSingleton.getInstance();

		//           
		System.out.println(lazyNotSafeSingleton == lazyNotSafeSingleton2);

		//        Hash     
		System.out.println(lazyNotSafeSingleton);
		System.out.println(lazyNotSafeSingleton2);
	}
}

class DoubleCheckSingleton{
	private DoubleCheckSingleton(){}
	
	//volatile       
	private static volatile DoubleCheckSingleton instance = null;
	private static Object object = new Object();
	
	public static DoubleCheckSingleton getInstance(){
		//      ,     ,          
		if(instance == null){
			synchronized(object){
				if(instance == null){
					instance = new DoubleCheckSingleton();
				}
			}
		}
		
		return instance;
	}
}

[주: 여기 서 volatile 은 가시 성 이 좋 은 것 으로 이해 되 며, 기타 이 해 는 참고 할 수 있 습 니 다 < >]

좋은 웹페이지 즐겨찾기