首页 > 其他 > 详细

单例模式双重验证锁

时间:2019-12-21 11:27:44      阅读:85      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 沒有将变量设置成volatile,会有下面问题:

new是操作不说原子性的,他包含操作:

1,分配内存地址,allocate memory

2,初始化对象, initialize object

3,将引用变量指向内存,make referent variable point to memory

由于jvm的重排列re-order问题,会将2和3调转,导致沒有完成初始化就使用而有epx

加了volatitle禁止了重排列,导致了再获得对象前,都会被阻塞在同步代码块中。

所以核心问题就是:在初始化时候同步了,而沒有在修改操作中同步。

引申问题:一个变量在不同的同步块中是不会同步的。

 

单例模式双重验证锁

原文:https://www.cnblogs.com/vhyc/p/12076048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!