美文网首页
在双重检查锁模式中为什么需要使⽤ volatile 关键字?

在双重检查锁模式中为什么需要使⽤ volatile 关键字?

作者: 码农ing | 来源:发表于2022-04-07 10:49 被阅读0次

在java内存模型中,volatile 关键字作⽤可以是保证可见性或者禁⽌指令重排。这⾥是因为 singleton = new Singleton() ,它并⾮是⼀个原⼦

操作,事实上,在 JVM 中上述语句⾄少做了以下这 3 件事:

第⼀步是给 singleton 分配内存空间;

第⼆步开始调⽤ Singleton 的构造函数等,来初始化 singleton;

第三步,将 singleton 对象指向分配的内存空间(执⾏完这步 singleton 就不是 null 了)。

这⾥需要留意⼀下 1-2-3 的顺序,因为存在指令重排序的优化,也就是说第 2 步和第 3 步的顺序是不能保证的,最终的执⾏顺序,可能是 1-

2-3,也有可能是 1-3-2。

相关文章

网友评论

      本文标题:在双重检查锁模式中为什么需要使⽤ volatile 关键字?

      本文链接:https://www.haomeiwen.com/subject/cpvjsrtx.html