黑马程序员技术交流社区

标题: 懒汉式单例设计模式中第二次if判断有必要么? [打印本页]

作者: 胡几手    时间: 2015-3-22 14:41
标题: 懒汉式单例设计模式中第二次if判断有必要么?
class Single
{
        private static Single s = null;
        private Single(){}
        public static Single getInstance()
        {
                if(s==null)
                {
                        synchronized(Single.class)
                        {                               
                                if(s==null)
                                        s = new Single();
                        }
                }
                return s;
        }
}
如上代码,同步锁里面的if判断存在的意义是什么,百思不得其解啊,哪位大神解答下啊。


作者: 小七的    时间: 2015-3-22 15:49
双重的if判断,减少对锁的判断次数,
作者: 有丶时候    时间: 2015-3-22 15:58
多加一个if判断是为了不让其多次判断锁synchronized(Single.class),能稍微提高懒汉式的效率。建议你看一遍毕老师单例设计模式那个视频,讲得很形象。
作者: wkz_crystal    时间: 2015-3-22 16:05
你这样想:如果没有外出循环,是不是程序每次进来都要经历到锁的位置,有了if判断之后,是为空才进来,不是对象为空,直接用就OK,
作者: rhui    时间: 2015-3-22 16:39
s=new Single上面那个判断吗,不懂,没看明白怎么回事,同求
作者: One_M    时间: 2015-3-22 16:40
这样就不用每次都判断锁了....




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