zoukankan      html  css  js  c++  java
  • 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; } } 最常用的就是双重锁了,效率还可以

      

  • 相关阅读:
    JMeter递增加压总结
    JMeter跨线程传参总结
    JMeter+Grafana+Influxdb可视化性能监控平台搭建总结
    MONyog入门总结
    MongoDB导出/导入操作
    测试工作中用到的MongoDB命令
    Go单元测试与报告
    Postwoman教程
    测试工作中用到的Redis命令
    redis-dump教程
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6226594.html
Copyright © 2011-2022 走看看