volatile原理及使用场景

  以前一直困惑于volatile到底有什么功能、怎么使用。多方搜索资料,终于理清了头绪,记录一下。 首先,volatile有两个作用:(1)保证变量的可见性(2)防止指令重排序。这两个作用都是通过设置内存屏障实现的。 防止指令重排序这个很好理解,对一个变量可能有多种操作,如果使用操作在赋值操作之前发生,就会导致数据错误甚至空指针等问题。 一直以来最困惑的还是第(1)个作用,volatile是怎么
相关文章
相关标签/搜索