文章目录
- Monitor
- java对象头
- Monitor(锁、管程)
Monitor
java对象头
普通对象
Mark Word 主要用来存储对象自身的运行时数据、klass word就是指向该对象的类型。
数组对象
mark word
不同对象状态下结构和含义不同。
Monitor(锁、管程)
-
当synchronized锁一个对象(重量级锁)时会关联一个操作系统的Monitor对象,对象头中markword中ptr_to_heavyweight_montior就会指向对应monitor对象。
-
同时将Monitor中的owner给对应线程,表示该锁现在对应线程拥有。
-
如果现在有其他线程尝试加锁,会发现对象指向的Monitor中的owner并不是该线程,就会让该线程进入等待队列,线程阻塞。
-
如果该锁被释放,那么等待队列中的线程将被唤醒重写争取锁。