volatile通过内存屏障来防止指令重排序
发布时间:2022-11-30 06:26:25 29
相关标签:
private volatile static Singleton intance = null;
实际上,volatile是通过“内存屏障”来防止指令重排序的,具体的实现步骤如下:
1.在volatile写操作前,插入一个StoreStore屏障。
2.在volatile写操作前,插入一个StoreLoad屏障。
3.在volatile读操作前,插入一个LoadLoad屏障。
4.在volatile读操作后,插入一个LoadStore屏障。
此外,要特别注意的一点是,虽然volatile修饰的变量具有可见性,但是并不具备原子性,因此volatile不是线程安全的。
文章来源: https://blog.51cto.com/u_11315052/5883122
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报