1.volatile原理
1>.volatile的底层实现原理是内存屏障,Memory Barrier(/Memory Fence);
①.在对volatile变量的写指令后会加入写屏障;
②.在对volatile变量的读指令前会加入读屏障;
其目的是告诉线程volatile变量修改完成之后要同步到主内存中,读取volatile变量之前要从主内存中读取最新的数据;
1.1.内存屏障
1.1.1.可见性
1>.写屏障(sfence)保证在该屏障之前对共享变量的改动都同步到主存当中;
2>.读屏障(lfence)保证在该屏障之后对共享变量的读取,加载的是主存中的最新数据;
1.1.2.有序性
1>.写屏障会确保指令重排序时,不会将写屏障之前的代码排在写屏障之后;
2>.读屏障会确保指令重排序时,不会将读屏障之后的代码排在读屏障之前;
1.2.保证可见性
1>.写屏障(sfence)保证在该屏障之前对共享变量的改动都同步到主存当中;
public void