黑马程序员技术交流社区

标题: 关于同步的问题,为啥 不在这个位置停止? [打印本页]

作者: 小Zeor………    时间: 2014-2-27 00:19
标题: 关于同步的问题,为啥 不在这个位置停止?
本帖最后由 小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切换,而在一句结束的时候可能切换
作者: 不再散步    时间: 2014-2-27 00:29
上面这个是 懒汉模式的单例设计,为什么不在我所标注的位置停止啊, 也就是程序为么不在半句的时候进行CPU切换,而在一句结束的时候可能切换
==> cpu在一个时钟周期能执行特定长度的指令。程序在编译之后,都是会变成一条条的机器指令,有的指令功能复杂,有的简单,singleton==null是可以在一条指令内完成,不会出现楼主所说的执行半句就被切换出去的情况。




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