1.字段声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。(volatile误用进行原子性操作)
2.volatile的原理:volatile变量修饰的共享变量进行写操作时会在汇编代码前加上lock前缀, lock前缀的指令在多核处理器下会引发两件事情:
将当前处理器缓存行的数据写回到系统内存
该写回内存的操作会使在其他CPU里缓存了该内存地址的额数据无效
3.锁定某块内存区域的缓存并回写到内存,并使用缓存一致性机制来确保修改的原子性,此操作被称为“缓存锁定”,缓存一致性机制会阻止同时修改由两个以上处理器缓存的内存区域数据。
4.。实现缓存一致性协议(嗅探技术)处理器使用嗅探技术保证它的内部缓存、系统内存和其他处理器的缓存的数据在总线上保持一致。
5优化追加字节
不能优化条件:
·缓存行非64字节宽的处理器
·共享变量不会被频繁地写
加字节的方式在Java 7下可能不生效