单例模式&synchronized

package com.ibm.dg;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        SingletonClass s1 =SingletonClass.getInstall();
        SingletonClass s2 = SingletonClass.getInstall();
        
        System.out.println(s1==s2);   //true
        System.out.println(s1.equals(s2));  //true
    }
}

//单例模式的应用场景 与机会 :
//一般情况下这个在项目中都是怎么使用呢 ?
//资源池创建连接 ,数据库连接 ,但是 一般数据库都是用连接池的 ,单例模式会造成等待

package com.ibm.dg;

public class SingletonClass {
    
    private SingletonClass(){} //定义私有构造方法
    private static SingletonClass install=null;
    public static SingletonClass getInstall(){
        if(install == null){
            synchronized(SingletonClass.class){ //synchronized 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,
                                               //一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
                if(install == null){
                    install = new SingletonClass();
                }
            }
        }
        return install;
    }
}



posted @ 2016-10-20 17:58  yuerspring  阅读(331)  评论(0编辑  收藏  举报