Java volatile
理解 Java volatile 关键字
Java提供的一种轻量级的同步机制。
原因
CPU多级缓存
CPU指令重排
作用
写入时,不进入CPU缓存,强制写入内存中(JMM会把该线程对应的本地内存中的变量强制刷新到主内存中去,这个写入操作会导致其他线程中的缓存无效)
读取时,强制从内存中读取
限制指令重排
效果
可以解决并发编程中的可见性、有序性问题
volatile关键字不能保证原子性(原子性指的是一个操作是不可分割的,要么完整地执行,要么不执行,没有中间状态)
保证了不同线程对这个变量进行操作时的可见性
禁止进行指令重排序
参考文档
Java volatile
https://shikai.info/archives/java-volatile