volatile是什么:
volatile是jvm提供的最轻量级的同步机制。
volatile和synchronized一样是java关键词,保证其修饰的数据的“可见性”。能保证一个线程修改了volatile修饰的数据的时候,其他线程能获取到修改后的值。
底层机制:
主要通过底层Lock前缀的指令锁定工作内存和主内存,并将修改后的值store、write主内存数据。
其他线程通过cpu总线嗅探机制察觉到数据修改经过总线,使工作内存的数据失效后重新read主内存中的数据。

使用:
使用volatile的结果:


未使用volatile的结果:


程序无法跳出while循环,一直空转。
注意:volatile保证可进行和有序性,但是不保证原子性,保证原子性还是需要synchronized这样的锁机制