美文网首页JVM
JVM - 字节码指令集 - 同步

JVM - 字节码指令集 - 同步

作者: HRocky | 来源:发表于2018-07-25 10:43 被阅读0次

Java虚拟机可以支持方法级和方法内部一段指令序列的同步,这两种同步结构都是使用管程(Monitor)来支持的。

方法级的同步是隐式,则无需通过字节码指令来控制的,它实现在方法调用和返回操作之中。虚拟机可以从方法常量池中的方法表结构(method_info Structure)中的ACC_SYNCHRONIZED访问标志区分一个方法是否是同步方法。当方法调用时,调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否被设置,如果设置了,执行线程先持有管程,然后再执行方法,最后在方法完成(无论是正常完成还是非正常完成)时释放管程。在方法执行期间,执行线程持有了管程,其他线程都无法再获得同一个管程。如果一个同步方法执行期间抛出了异常,并且在方法内部无法处理异常,那这个同步方法所持有的管程将在异常抛到同步方法之外时自动释放。

同步一段指令集序列通常是由Java语言的synchronized块来表示的,Java虚拟机的指令集中有monitorenter和monitorexit两条指令来支持synchronized关键字的语义,正确实现synchronized关键字需要编译器与Java虚拟机两者协作支持。

相关文章

  • JVM - 字节码指令集 - 同步

    Java虚拟机可以支持方法级和方法内部一段指令序列的同步,这两种同步结构都是使用管程(Monitor)来支持的。 ...

  • JAVA基础整理

    1.JVM为什么可以跨平台 JVM能跨计算机体系结构(操作系统)来执行Java字节码(JVM字节码指令集),屏蔽可...

  • java字节码

      我们都知道Java字节码是JVM所使用的指令集。java字节码可以分为如下几类: 操作数栈   Java 方法...

  • 阿里面试分析Synchronized原理,让面试官仰望

    内容导航 从同步的字节码说起 什么是显示器 分析同步的源码 从同步的字节码说起 由于同步的实现是在JVM层面,所以...

  • Java面试攻略——JVM

    1.1JVM的运行机制   JVM是运行Java字节码的虚拟机,包括一套字节码指令集,一组程序寄存器,一个虚拟机栈...

  • Java面试攻略——JVM

    1.1JVM的运行机制 JVM是运行Java字节码的虚拟机,包括一套字节码指令集,一组程序寄存器,一个虚拟机栈,一...

  • Java并发那些事儿序言

    JVM执行的Java代码是被转换成由字节码组成的class文件。那么JVM是如何在字节码层面上执行线程同步的? 回...

  • JVM - 字节码指令集

    Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操...

  • Class文件结构&字节码指令

    class文件结构 Class文件存储的内容称为字节码(ByteCode),包含了JVM指令集和符号表以及若干其他...

  • Java JVM运行机制

    一:Jvm基础概念 Java虚拟机(Jvm)是可运行Java代码的假想计算机 Java虚拟机包括一套字节码指令集、...

网友评论

    本文标题:JVM - 字节码指令集 - 同步

    本文链接:https://www.haomeiwen.com/subject/bmaumftx.html