zoukankan      html  css  js  c++  java
  • Java精通并发-通过openjdk源码分析ObjectMonitor底层实现

    在我们分析synchronized关键字底层信息时,其中谈到了Monitor对象,它是由C++来实现的,那,到底它长啥样呢?我们在编写同步代码时完全木有看到该对象的存在,所以这次打算真正来瞅一下它的真正面目,而对于这个Hospot代码JDK是并没有开源的,但是社区版本的JDK是开源了,在openjdk上可以阅读得到,所以下面先到openjdk上瞅一下:

    所以点击一下它:

    点击一下:

    然后点击左侧的browser方便我们浏览代码:

    然后定位到这个路径:

    然后点击runtime/,

    其中,我们要想看到Monitor对象的源代码就在其中,如下:

     其中.hpp是c++的头文件,其具体的实现是以cpp中,接下来就得打开它们来看我们想了解的东东了,是不是很刺激?对于上一次理论中提到了两个东东:

    那咱们从源码中来看一下具体都表现为啥,首先先来看一下ObjectMonitor.hpp:

    接下来就可以看到ObjectMonitor的类声明了:

     其实对就对应于:

     接下来挑里面的重点内容瞅一下:

    接下来看一下它的成员变量:

    那看一下_WaitSet的定义:

    再看一下_EntryList的定义:

    另外在上一个理论中提到了:

    其实也在底层有定义,如下:

    看一下它的定义:

    另外上理论中还提到了它:

    其实也有对应:

    继续来看其它的一个成员变量:

  • 相关阅读:
    Linux程序分析工具介绍—ldd,nm
    Makefile学习(三)[第二版]
    Linux下的tree命令 --Linux下目录树查看
    Makefile学习(二)[第二版]
    Makefile学习(一)[第二版]
    Linux下top命令详解
    Shell编程入门(第二版)(下)
    mysql用命令行导入sql文件
    javascript的onbeforeunload函数在IOS上运行
    mysql如何利用Navicat 导出和导入数据库
  • 原文地址:https://www.cnblogs.com/webor2006/p/11442551.html
Copyright © 2011-2022 走看看