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的定义:

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

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

    看一下它的定义:

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

    其实也有对应:

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

  • 相关阅读:
    Fractal
    加工生产调度/爬山Mountain Climbing
    魔板 Magic Squares
    USACO Section 1.5
    USACO Section 1.4(有技巧的枚举)
    卷积神经网络 CNN
    优化算法
    评价分类器的好坏
    梯度消失 / 梯度爆炸以及Xavier初始化
    Dropout
  • 原文地址:https://www.cnblogs.com/webor2006/p/11442551.html
Copyright © 2011-2022 走看看