Volatile笔记小记

Volatile

  1. valatile的作用
  2. 可见性到底是什么?
  3. 如何保证可见性?
  4. Happen-Before原则

保证可见性

valatile关键字的作用就是保证线程之间的可见性。

可见性到底是什么?

所谓可见性,就是当我们多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改后的值。

如何保证可见性

volatile修饰的变量,JMM将在写操作后插入一个写屏障指令,在读操作前插入一个读屏障指令,这就代表:

  1. 一旦有线程对变量写入了新值,任何访问这个变量的线程都会得到新的值。
  2. 在写入前,也会保证所有之前发生的事情已经发生,并且更新过的数据值也是可见的。内存屏障会把之前写入值都刷新到缓存,所以volatile可以保证可见性。

Happen-Before原则

volatile的Happen-Before原则是对一个volatile变量的写操作happen-before对此变量的任意操作(当然也包括写操作了)。

你可能感兴趣的:(成长路程,学习笔记)