volatile的两个作用:1、线程之间的可见性。我修改了数据一定要让你知道。要访问的两个数据在同一个缓存行(cash line)里,多线程需要分别用到这两个数据,这个时候就需要volatile了2、禁止CPU的乱序执行。