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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huhanghao 中级黑马   /  2015-3-16 20:42  /  942 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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?!

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

4 个回复

倒序浏览
你这个是静态的啊,静态的同步函数对应的是本类的对应的字节码文件对象。就是类名.class
非静态的同步函数才是this

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报 1 0
千殇一梦 发表于 2015-3-16 21:29
你这个是静态的啊,静态的同步函数对应的是本类的对应的字节码文件对象。就是类名.class
非静态的同步函数 ...

啊!这样啊!
回复 使用道具 举报
静态方法里写代码块只能是写某个类的字节码文件,而不能写this,因为static的方法是在类加载时就加载的,加载时根本就没有this,这就是不能使用this的原因
回复 使用道具 举报
感谢楼主分享的这问题 我开始也有遇到 学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马