0
点赞
收藏
分享

微信扫一扫

volatile通过内存屏障来防止指令重排序

private volatile static Singleton intance = null;

实际上,volatile是通过“内存屏障”来防止指令重排序的,具体的实现步骤如下:

1.在volatile写操作前,插入一个StoreStore屏障。

2.在volatile写操作前,插入一个StoreLoad屏障。

3.在volatile读操作前,插入一个LoadLoad屏障。

4.在volatile读操作后,插入一个LoadStore屏障。

此外,要特别注意的一点是,虽然volatile修饰的变量具有可见性,但是并不具备原子性,因此volatile不是线程安全的。

举报

相关推荐

0 条评论