1. 程式人生 > >java 單例模式的兩種常用寫法

java 單例模式的兩種常用寫法

1. 雙重校驗鎖:

/***
 * 單例模式之雙重校驗鎖
 * @since jdk 1.5
 * @author yerui
 *2015年12月17日
 */
public class SingletonOne {
    
	private  static SingletonOne instance = null; 
	
	private  SingletonOne() {
	    
	}
    
	public static SingletonOne getInstance(){
		if(instance == null){
			synchronized(SingletonOne.class){
				if(instance == null){
					instance = new  SingletonOne();
				}
			}
		}
		return   instance;
		
	}	

}

注:在JDK1.5之後,雙重檢查鎖定才能夠正常達到單例效果。這是工作中經常用的單例模式。

2.靜態內部類模式

/***
 * 單例模式之靜態內部類
 * @author yerui
 *2015年12月17日
 */
public class SingletonTwo {
    private  SingletonTwo(){
    	
    }
	private static class SingletonHolder{
		private static final SingletonTwo INSTANCE  = new  SingletonTwo();
	}
	
	public static final  SingletonTwo getInstance(){
		return  SingletonHolder.INSTANCE;
	}
	
}
這種方式同樣利用了classloder的機制來保證初始化instance時只有一個執行緒