场景引入 可见性问题 先来看一张图: 上面的图,是简化版的Java内存模型,一个线程有自己的工作内存,同时还有一个共享的主内存. 线程1和线程2读取数据data时,先从主内存里加载data变量的值到工作内存,然后才可以使用那个值. 假设现在线程1修改了data变量的值为1,然后将这个修改写入到自己的工作内存.那么此时,线程1的工作内存里data的值为1,而主内存里data的值还是0.线程2的工作内存data值也是0. 这就尴尬了,线程1和线程2操作的是用一个变量data,但由于线程本地缓存的存在…