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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小Zeor……… 于 2014-2-27 00:20 编辑

class LazySingleton{

    private static LazySingleton singleton;

    private LazySingleton(){

    }

    public static LazySingleton getInstance(){

        if(singleton==null){  //老师说,破坏同步的的原因是因为这里CPU切换,会创造两个实例

            singleton       !!!如果程序运行到等号的前面一半,然后切换,不也坏事么?为什么这里CPU不会切换? 为什么必须是执行了一句话才会停止啊?        =new LazySingleton();

        }

        return singleton;
    }

}
上面这个是 懒汉模式的单例设计,为什么不在我所标注的位置停止啊, 也就是程序为么不在半句的时候进行CPU切换,而在一句结束的时候可能切换

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

1 个回复

倒序浏览
上面这个是 懒汉模式的单例设计,为什么不在我所标注的位置停止啊, 也就是程序为么不在半句的时候进行CPU切换,而在一句结束的时候可能切换
==> cpu在一个时钟周期能执行特定长度的指令。程序在编译之后,都是会变成一条条的机器指令,有的指令功能复杂,有的简单,singleton==null是可以在一条指令内完成,不会出现楼主所说的执行半句就被切换出去的情况。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马