黑马程序员技术交流社区

标题: 多线程中的单例模式 [打印本页]

作者: forTomorrow    时间: 2015-6-5 14:23
标题: 多线程中的单例模式
/**
* 饿汉式
*
*/
class SingleHungry {
    private static final SingleHungry sH = new SingleHungry();//final修饰表示对变量常量化,不可改变其值
    private SingleHungry(){//私有化构造函数,不可通过new来创建对象
        
    }
    public static SingleHungry getInstance(){//静态函数,表示通过类名.函数  调用该函数达到创建单例对象的效果
        return sH;
    }
}

/**
* 懒汉式
*
*/
class SingleLazy{
    private static SingleLazy sL = null;//注意:这里不能加final修饰,因为final修饰后该变量就该常量化,后面的程序不可改变其值了
    private SingleLazy(){//私有化构造函数,不可通过new来创建对象        
    }
    public static SingleLazy getInstance(){
        if(sL==null){//为了提高效率,优化加同步锁造成的效率问题
            synchronized(SingleLazy.class){
                if(sL== null)//对多线程中的共有数据进行同步,以达到单例的效果
                    sL= new SingleLazy();
            }   
        }
        return sL;
    }
}

作者: 流水0215    时间: 2015-6-5 18:14
学习一下   
作者: wtf518    时间: 2015-6-5 20:32
多线程中的单例设计模式确实很棒!
作者: 林RM    时间: 2015-6-5 21:22
今天刚学,复习下
作者: 追忆似水年华    时间: 2015-6-5 22:59
学习学习。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2