JVM系列四:(volatile、synchronized的实现细节)

226 阅读1分钟

volatile的实现细节:

1.字节码层面
     ACC_VOLATILE ,用字节码分析工具打开可以看到
2.JVM虚拟机层面(hotspot)
     volatile内存区的读写都加屏障
3.os和硬件层面
        根据操作系统,cpu等不同,实现方式也不同,有加内存屏障,也可使用lock..锁定内存块指令实现等等

synchronized的实现细节

1.字节码层面
     ACC_SYNCHRONIZED
     monitorenter  monitorexit
2.JVM虚拟机层面(hostspot)
      JVM由c和c++实现,在jvm层由c和c++调用了系统层面的同步机制
3.os和硬件层面
     x86cpu中实现为使用了 lock comxchg xx 即类cas(俗称的自旋锁)来实现
     根据系统和cpu不同,实现都是不一样的

拓展:现在java代码在Linux中运行,一般对应的一个java线程,对应一个Linux系统线程。