zoukankan      html  css  js  c++  java
  • 单例模式

    单例模式 确保一个类只有一个实例,并提供一个全局访问点。

    最简单的单例模式,不适用于多线程下使用

    package demo;
    
    /**
     * 同步情况下使用, 多线程下可能会产生多个Singleton实例
     * 
     * @author wy
     * 
     */
    public class Singleton {
    
    	private static Singleton singleton;
    
    	private Singleton() {
    	}
    
    	public static Singleton getInstance() {
    		if (singleton == null) {
    			singleton = new Singleton();
    		}
    		return singleton;
    	}
    }

    多线程下也可使用的单例模式:

    package demo;
    
    /**
     * 保證了多线程下祇能产生一个Singleton实例
     * 
     * @author wy
     * 
     */
    public class NewSingleton {
    
    	private static NewSingleton singleton = new NewSingleton();
    
    	private NewSingleton() {
    	}
    
    	public static NewSingleton getInstance() {
    		return singleton;
    	}
    }
    

    package demo;
    
    /**
     * 双重检查加锁,防止多线程情况下产生多个Singleton
     */
    import sun.security.jca.GetInstance;
    
    public class OtherSingleton {
    
    	private volatile static OtherSingleton singleton;
    
    	private OtherSingleton() {
    	}
    
    	public static OtherSingleton GetInstance() {
    		if (singleton == null) {
    			synchronized (OtherSingleton.class) {
    				if (singleton == null) {
    					singleton = new OtherSingleton();
    				}
    			}
    		}
    		return singleton;
    	}
    
    }
    


  • 相关阅读:
    《大话设计模式》读书笔记
    设计模式个人笔记
    多线程的单元测试工具
    设计模式六大原则
    时间复杂度和空间复杂度(转)
    排序算法笔记
    《人月神话》读书笔记
    微信公众号开发踩坑记录(二)
    微信公众号开发踩坑记录
    全栈工程师之路
  • 原文地址:https://www.cnblogs.com/wyang0126/p/5039915.html
Copyright © 2011-2022 走看看