Java精通并发-通过openjdk源码分析ObjectMonitor底层实现

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

所以点击一下它:

点击一下:

 

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

然后定位到这个路径:

然后点击runtime/,

 

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

 

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

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

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

 

 其实对就对应于:

 

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

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

那看一下_WaitSet的定义:

再看一下_EntryList的定义:

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

 

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

看一下它的定义:

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

其实也有对应:

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

 

 

posted on 2019-09-01 15:54  cexo  阅读(5664)  评论(1编辑  收藏  举报

导航