세 가지 싱글 톤 의 실현 방식.

1785 단어 자바
세 가지 싱글 톤 의 실현 방식 중 하 나 는 익숙 한 DCL 이 고,다른 두 가 지 는 카 스 특성 으로 이 루어 진다.

public class LazySingleton {   
    private static volatile LazySingleton instance;   
       
    public static LazySingleton getInstantce() {   
        if (instance == null) {   
            synchronized (LazySingleton.class) {   
                if (instance == null) {   
                    instance = new LazySingleton();   
                }
            }   
        }   
        return instance;   
    }   
}  

/**
 *   putIfAbsent      ,      
 * 
 * @author Administrator
 * 
 */
public class ConcurrentSingleton {
	private static final ConcurrentMap<String, ConcurrentSingleton> map = new ConcurrentHashMap<String, ConcurrentSingleton>();
	private static volatile ConcurrentSingleton instance;

	public static ConcurrentSingleton getInstance() {
		if (instance == null) {
			instance = map.putIfAbsent("INSTANCE", new ConcurrentSingleton());
		}
		return instance;
	}
}

public class AtomicBooleanSingleton {
	private static AtomicBoolean initialized = new AtomicBoolean(false);
	private static volatile AtomicBooleanSingleton instance;
	
	public static AtomicBooleanSingleton getInstantce() {   
		checkInitialized();
        return instance;   
    }
	
	private static void checkInitialized() {
		if(instance == null && initialized.compareAndSet(false, true)) {
			instance = new AtomicBooleanSingleton();
		}
	}
}

좋은 웹페이지 즐겨찾기