实际上java内存模型是如上图所示一样 每个线程有自己的栈内存,存放共享对象的副本,本地变量 每个线程自己的本地变量是不可见的,但是共享对象对每个线程都是可见的. 如果想实现线程通信的话, 线程对共享对象的修改,实际上是首先对本地副本修改,然后修改主内存,堆内存,通信线程再去修改. 如果想保证线程之间的共享对象的可见性, 可以采用volidate关键字修饰, 他强制线程每次从主存读取,修改后立刻刷新到主存 而保证防止多个线程同时修改本地变量后,主内存防止产生错误数据, synchronize关键…