Java 中的 volatile
关键字有两个主要的作用,一个是保证内存的可见性,还有一个作用就是禁止指令重排序的发生。
上面我们已经简答的提到了 volatile 关键字的作用,一个是保证内存的可见性,还有防止指令重排序。
下面再来解释一下内存可见性
内存可见性:当一条线程修改了某个值,这个新值对于其他的线程是立即可见的,普通的变量不具备这个特征
下面说结论,被 volatile 关键字修饰的变量不是线程安全的,因为 volatile 不能保证原子性。
再另外的说一句,被 synchronized 修饰的代码块具备原子性。