本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。
1. volatile 关键字
1.1 volatile 关键字作用:
在百度百科截取的描述如下:
叩丁狼教育.png
说明volatile 关键字作用作用有两点:
-
防止指令重排:规定了volatile 变量不能指令重排,必须先写再读。
-
内存可见:线程从内存中读取volatile修饰的变量的数据,直接从主内存中获取数据,不需要经过CPU缓存,这样使得多线程获取的数据都是一致的。如图所示:
叩丁狼教育.png
1.2 volatile和synchronized的区别
volatile不能够替代synchronized,原因有两点:
1.对于多线程,不是一种互斥关系
2.不能保证变量状态的“原子性操作”&#