volatile关键字的作用(变量可见性,不保证原子性,禁止指令重排)
java语言提供了一种稍弱的同步机制,即volatile变量,用来确保变量的更新操作通知到其他线程,volatile变量不会缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile的变量时总是会返回最新的写入的值。
不保证原子性
变量可见性
其一是保证该变量对所有线程可见,这里的可见性是指当一个线程修改了变量的值,其他线程便能立即获取最新写入的值。
禁止指令重排
volatile禁止了指令重排
java语言提供了一种稍弱的同步机制,即volatile变量,用来确保变量的更新操作通知到其他线程,volatile变量不会缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile的变量时总是会返回最新的写入的值。
不保证原子性
变量可见性
其一是保证该变量对所有线程可见,这里的可见性是指当一个线程修改了变量的值,其他线程便能立即获取最新写入的值。
禁止指令重排
volatile禁止了指令重排