单例模式

单例模式代码本身

class Singleton {

    //将声明对象的工作发在全局变量中
    private static Singleton instance;
    
    //这个对象是为了在锁住这个类的时候的判断
    private static Object object = new Object();
    
    //私有化构造方法,只有本身可以创建本身
    private Singleton(){}
    
    //外部的类要创建这个类通过这个方法创建
    public static Singleton getInstance(){
        if(instance == null){
            //当对象为空的时候才进行synchronized对象
            synchronized(object){
                //双重判断是否为空,是考虑到多线程的时候,如果
                
//两个线程通过了第一个null判断后,第一个线程锁定了
                
//object后,创建了一个对象,解锁,如果不在进行第二个null
                
//判断的话,第二个线程就可以继续创建第二个对象,违反了
                
//单例模式的单一对象的原则
                if(instance == null){
                    instance = new Singleton();
                }
            }
        }
         return instance;
    }
} 

 接下来是调用的代码

public class Test {

    public static void main(String[] args) {
        Singleton.getInstance();
    }

} 


posted @ 2015-01-12 23:16  墨迹修  阅读(138)  评论(0编辑  收藏  举报