volatile的理解
首先聊一下volatile关键字的作用:1、保证内存可见性;2、禁止指令重排序;先说内存可见性:1、要讲一下JMM,我们通常说的java虚拟机内存是分成主内存和线程本地内存的,这个很多文章有讲,有图。那么思考两个问题:为什么要设计线程的本地内存?这个本地内存空间究竟在哪里?由于CPU处理速度远大于内存读写,所以CPU是带一块告诉缓存的。但是这个高速缓存非常小。通常就是几个M或者几十个M而已,每次CPU分配时间片执行线程代码时,要把指令集合还有本地方法栈加载过来,这样时间片结束前尽量.

