• Singleton(单例模式)


    一、
    /**
     * lazy man(不是线程安全的)
     * @author TMAC-J
     *
     */
    public class Singleton {
    	
    	private static Singleton instance;
    	
    	private Singleton(){}
    	
    	public static Singleton getInstance(){
    		if(instance!=null){
    			instance = new Singleton();		
    			}
    		return instance;
    	}
    	
    }
    
    二、
    /**
     * lazy man(线程安全)
     * @author TMAC-J
     *
     */
    public class Singleton {
    	
    	private static Singleton instance;
    	
    	private Singleton(){}
    	
    	public static synchronized Singleton getInstance(){
    		if(instance!=null){
    			instance = new Singleton();		
    			}
    		return instance;
    	}
    	
    }
    
    三、
    /**
     * hungry man(天生线程安全,缺点是类加载的时候就会实例化)
     * @author TMAC-J
     *
     */
    public class Singleton {
    	
    	private static Singleton instance = new Singleton();
    	
    	private Singleton(){}
    	
    	public static Singleton getInstance(){
    		return instance;
    	}
    	
    }
    
    四、
    这种写法和上面效果一样
    public class Singleton {  
        private Singleton instance = null;  
        static {  
        instance = new Singleton();  
        }  
        private Singleton (){}  
        public static Singleton getInstance() {  
        return this.instance;  
        }  
    }
    
    五、
    
    /**
     * 静态内部类
     * 
     * @author TMAC-J
     *
     */
    public class Singleton {
     
    	private static class SingletonHolder {
    		private static  final Singleton instance = new Singleton();
    	}
    
    	private Singleton(){};
    	
    	public static final Singleton getSinleton(){
    		return SingletonHolder.instance;
    	}
    }
    
    六、
    
    public enum Singleton {  
        INSTANCE;  
    }  
    
    七、
    /**
     * 双重锁
     * 
     * @author TMAC-J
     *
     */
    public class Singleton {
     
    	private static Singleton instance;
    	
         private Singleton(){}

    public static Singleton getInstance(){ if(instance == null){ synchronized (Singleton.class) { if(instance == null){ instance = new Singleton(); } } } return instance; } } 最常用的就是双重锁了,效率还可以

      

  • 相关阅读:
    Android 禁用以及捕捉home键
    android中正确导入第三方jar包
    使用SharedPreferences进行数据存储
    tomcat不安全因素
    spring边边角角
    宏定义
    C++变量对比java变量所占内存
    结构指针的分析
    对结构使用指针
    什么是程序文件?
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6226594.html
Copyright © 2020-2023  润新知