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


  • 相关阅读:
    用户自定义异常
    触发异常
    第一阶段冲刺终
    第一阶段冲刺七
    第一阶段冲刺六
    第一阶段冲刺五
    第一阶段冲刺四
    Sufficient Statistic (充分统计量)
    DAG-GNN: DAG Structure Learning with Graph Neural Networks
    Masked Gradient-Based Causal Structure Learning
  • 原文地址:https://www.cnblogs.com/wyang0126/p/5039915.html
Copyright © 2011-2022 走看看