A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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判断存在的意义是什么,百思不得其解啊,哪位大神解答下啊。

5 个回复

倒序浏览
双重的if判断,减少对锁的判断次数,

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 很给力!

查看全部评分

回复 使用道具 举报
多加一个if判断是为了不让其多次判断锁synchronized(Single.class),能稍微提高懒汉式的效率。建议你看一遍毕老师单例设计模式那个视频,讲得很形象。
回复 使用道具 举报
你这样想:如果没有外出循环,是不是程序每次进来都要经历到锁的位置,有了if判断之后,是为空才进来,不是对象为空,直接用就OK,
回复 使用道具 举报
s=new Single上面那个判断吗,不懂,没看明白怎么回事,同求
回复 使用道具 举报
这样就不用每次都判断锁了....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马