volatile 作用简单总结

volatile 作用:1:保证可见性;2:防止指令重排 ;3:一定的原子性


1:共享元素的改变,直接写回主存中,同时通知其余线程刷新缓存,读取最新的值,防止脏读;
2:对于没有依赖的指令,jvm会进行指令重排,有可能使程序失效;
3.原子性(保证一定的原子性),可以保证对于double 的操作,是原子性的,不会在程序对其进行操作的时候,被打断,造成脏读;至于保证一定的原子性
  而言,主要是针对long,和double而言,因为这两个是64位,正常来说是进行两次的读取,volaile可以保证原子性,但是对于 i++的话 这时候i++也是不保证原子性的,不管是不是volatile,因为有两步操作。
  要保证完整性一般用线程同步。

猜你喜欢

转载自blog.csdn.net/Forward__/article/details/81052807