黑马程序员技术交流社区
标题:
关于同步的问题,为啥 不在这个位置停止?
[打印本页]
作者:
小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