초기화 지연 초기화로 초기화 클래스와 창설 대상의 비용을 낮추다

2046 단어 JVM--잡담
 Java      ,                           。

CASE:

	public class Singleton{
		
		private static Singleton instance = null;
		
		private Singleton(){							//         
		}
		
		public static Singleton getInstance(){
			if(instance == null){						//      
				synchronized (Singleton.class) {		//   
					if (instance == null) {				//      
						instance = new Singleton();		//    instance  
					}
				}
			}
			return instance;
		}
	}	

	  :
		1)  A  instance = new Singleton();            3   :
		
			①    、  (  ->  ->  )。
			②     。						 :    ,        。
			③ instance          。	 :                。
	
		2)   ② ③       :
			          -->  instance          。(  ,           !) -->      。

		3)       ,          B             instance  null,  B      instance      ,             A     !		
		
		
	
             2   :

	1)  volatile     ,   ② ③   。
	
		  :         volatile ,② ③      ,            。
		  :    、              。
		
		public class Singleton{
			
			private volatile static Singleton instance = null;
			
			private Singleton(){	//         
			}
			
			public static Singleton getInstance(){
				if(instance == null){
					synchronized (Singleton.class) {
						if (instance == null) {
							// instance volatile  , instance             。
							instance = new Singleton();	
						}
					}
				}
				return instance;
			}
		}		

		
	2)           (       ),  ② ③   ,        “  ”     。
	
		  :			
			[1]      ,      Class       ,    A      Class       ,  ,             ,             。
			[2]       :  
				1>  new            
				2>           ( : final  、                     )。
				3>           。  

        public class Singleton{  
          
            private static class SingletonHolder {  
                private static Singleton instance = new Singleton();  
            } 
			
			private Singleton() {
			}

            public static Singleton getInstance() {  
                return SingletonHolder.instance;	//   SingletonHandler     
            }  
          
        }
		
		
		

좋은 웹페이지 즐겨찾기