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;
    	}
    
    }
    


  • 相关阅读:
    【转载】如何学JavaScript?前辈的经验之谈
    javascript基础学习心得01
    CSS之浮动
    HTML5基础学习心得
    如何使用HTML5的canvas属性
    HTML标记语言
    HTML+CSS学习
    线性表
    (2)协程之 greenlet模块
    (1)协程之理论
  • 原文地址:https://www.cnblogs.com/wyang0126/p/5039915.html
Copyright © 2011-2022 走看看