volatile是jvm提供的轻量级同步机制 保证了不同线程对变量操作的内存可见性 强制线程每次读取时从主内存取值禁止指令重排序 编译器可能对输入指令进行执行重排序,各个语句执行的先后顺序不一致,但会保证执行结果一致, 但是忽略的数据的依赖性 通过在指令间添加内存屏障,强制刷新cpu缓存数据,并且禁止指令重排序, store的屏障指令进行写操作, 使用copy命令刷新到主内存,load屏障指令从主内存中读取共享变量不具备原子性