面试官的一道简单的单例模式问题给我问懵了详解单例模式双重检查加锁为什么要加volatile关键字!
目录 1.场景: 2.对象的创建过程 3.指令重排 4.CPU执行时间片 5.指令重排对双重检查加锁模式的影响 1.场景: 面试官:有用过单例模式吗? 我:有有有(自信满满)。 面试官:说说单例模式几种写法? 我:懒汉式和饿汉式,懒汉式巴拉巴拉,饿汉式巴拉巴拉。 面试官:我们都知道synchronized加锁是比较耗费资源的,你这种写法每次访问都需要获得锁(基础的懒汉式写法),效率比较低,有什么优化的方式吗? 我:沉思片刻,脑海灵光一现。可以采用双重检查加锁的方式,巴拉巴拉。(还好之前看到过,暗自庆幸) 面试官:为什么双重检查加锁需要加volatile关键字? 我:要不我们问问度娘?
下载地址
用户评论