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


  • 相关阅读:
    进阶新的阶段--LCD
    UART的调试
    s5pv210的定时器
    s5pv210的外部中断
    按键的轮询
    点亮指路灯
    队列里面的二级指针
    链表实现学生成绩管理系统
    链表基本功能
    new的用法
  • 原文地址:https://www.cnblogs.com/wyang0126/p/5039915.html
Copyright © 2011-2022 走看看