volatile
volatile
关键字只能用于修饰变量,可解决并发的可见性和有序性问题,无法解决原子性问题。因此如果要执行并发 i++
之类的操作, 应使用 synchronized 或原子类。
根据 JMM 模型,每个线程存在自己的工作内存,且线程间共用一个主内存。volatile
修饰的变量在写入时,会使用store
命令强制同步变量到主内存中;而在执行读操作的时候,会使用load
命令强制从主内存中读取数据,以此解决可见性问题。
Search
Dec 14, 2023, 1 min read
volatile
关键字只能用于修饰变量,可解决并发的可见性和有序性问题,无法解决原子性问题。因此如果要执行并发 i++
之类的操作, 应使用 synchronized 或原子类。
根据 JMM 模型,每个线程存在自己的工作内存,且线程间共用一个主内存。volatile
修饰的变量在写入时,会使用store
命令强制同步变量到主内存中;而在执行读操作的时候,会使用load
命令强制从主内存中读取数据,以此解决可见性问题。