java并发编程笔记2-底层实现原理-volatile
为什么要画上面的图呢
Java中所使用的并发机制依赖于JVM的实现和CPU的指令。(是不是有点蒙,继续往下看就会明白这句话啥意思)
1.volatile的使用
字段被声明成 volatile。
2.volatile是如何来保证一致?(Java线程内存模型确保所有线程看到这个变量的值是一致的)
通过工具获取JIT编译器生成的汇编指令来查看对volatile进行写操作时,CPU会做什么事情,如下
重点:instanct 被volatile变量修饰后,读写操作的时候会多出第二行汇编代码 ,并且加上了锁lock。
通过查IA-32架构软件开发者手册可知,Lock前缀的指令在多核处理器下会引发了两件事情
1将当前处理器缓存行的数据写回到系统内存。
2这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效
看到这是不是更懵了,那是因为你对Java线程内存模型不理解。
不重要,只要知道上面这个过程就好了,所有等我后面具体介绍内存模型就理解了。
未完待续