黑马程序员技术交流社区

标题: 懒汉模式,升级版问题 [打印本页]

作者: huhanghao    时间: 2015-3-16 20:42
标题: 懒汉模式,升级版问题
class Single
{
        private Single s = null;
        private Single(){};

        public static getInstance()
        {
                if(s == null)
                {
                        synchronized(Single.class)
                        {
                                if(s==null)
                                {
                                        s = new Single();
                                }
                        }
                }
                return s;
        }
}

为什么synchronized(Single.class)里面不是this?!


作者: 千殇一梦    时间: 2015-3-16 21:29
你这个是静态的啊,静态的同步函数对应的是本类的对应的字节码文件对象。就是类名.class
非静态的同步函数才是this
作者: huhanghao    时间: 2015-3-16 21:31
千殇一梦 发表于 2015-3-16 21:29
你这个是静态的啊,静态的同步函数对应的是本类的对应的字节码文件对象。就是类名.class
非静态的同步函数 ...

啊!这样啊!
作者: lwj123    时间: 2015-3-16 22:32
静态方法里写代码块只能是写某个类的字节码文件,而不能写this,因为static的方法是在类加载时就加载的,加载时根本就没有this,这就是不能使用this的原因
作者: 吴阳    时间: 2015-3-16 23:55
感谢楼主分享的这问题 我开始也有遇到 学习了




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