这里解释一下,volatile 的作用确实不是禁止指令重排序(虽然网上大都是这么笼统的说的) 之所以多线程会获取到未完全初始化完成的单例对象,是因为new关键字在字节码中是分三步来执行的,正是这三步的乱序造成了线程不安全的问题。volatile真正的作用是在这三步字节码前后加上内存屏障(而不是禁止重排),从而防止对象在未初始化完成就被获取
14 10

相关推荐

怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
牛客92804383...:在他心里你已经是他的员工了
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务