Java锁Monitor-通过openjdk源码分析ObjectMonitor底层实现

文章目录


在我们分析synchronized关键字底层信息时,其中谈到了Monitor对象,它是由C++来实现的,那,到底它长啥样呢?我们在编写同步代码时完全木有看到该对象的存在,所以这次打算真正来瞅一下它的真正面目,而对于这个Hospot代码JDK是并没有开源的,但是社区版本的JDK是开源了,在openjdk上可以阅读得到,所以下面先到openjdk上瞅一下:
在这里插入图片描述
所以点击一下它:
在这里插入图片描述
点击一下:
在这里插入图片描述
在这里插入图片描述
然后点击左侧的browser方便我们浏览代码:
在这里插入图片描述
然后定位到这个路径:
在这里插入图片描述
然后点击runtime/,
在这里插入图片描述
其中,我们要想看到Monitor对象的源代码就在其中,如下:
在这里插入图片描述
其中.hpp是c++的头文件,其具体的实现是以cpp中,接下来就得打开它们来看我们想了解的东东了,是不是很刺激?对于上一次理论中提到了两个东东:
在这里插入图片描述
那咱们从源码中来看一下具体都表现为啥,首先先来看一下ObjectMonitor.hpp:
在这里插入图片描述接下来就可以看到ObjectMonitor的类声明了:
在这里插入图片描述
其实对就对应于:
在这里插入图片描述
接下来挑里面的重点内容瞅一下:
在这里插入图片描述
接下来看一下它的成员变量:
在这里插入图片描述
那看一下_WaitSet的定义:
在这里插入图片描述
再看一下_EntryList的定义:
在这里插入图片描述
另外在上一个理论中提到了: 在这里插入图片描述
其实也在底层有定义,如下:
在这里插入图片描述
看一下它的定义:
在这里插入图片描述
另外上理论中还提到了它:
在这里插入图片描述
其实也有对应:
在这里插入图片描述
继续来看其它的一个成员变量:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值