Volatile笔记
volatile(《Java并发编程的艺术 》)
实现线程对volatile变量修改的可见性原理: 如果对volatile变量进行写操作,JVM会向处理器发送Lock前缀的指令,将这个变量所在的缓存行的数据刷新到主内存。一个处理器的缓存回写到内存会导致其他处理器的缓存无效。
volatile写的内存语义:写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值刷新到主内存。
volatile读的内存语义:读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效。线程将从主内存中读取共享变量。
volatile的读写操作是原子性的,自增操作不是。
volatile防止重排序的原理:编译器生成字节码时,会在指令序列中插入内存屏障。