Synchronized关键字实现原理

Synchronized关键字实现原理

  • Synchronized关键字实现原理
      • 基础概念
      • 原理实现
            • Mark Word
            • Monitor
            • 同步代码块原理
            • 同步方法原理
            • synchronized锁的优化
            • Lock锁与synchronized
  • Reference

Synchronized关键字实现原理

基础概念

  • 修饰的类或者对象的所有操作都是原子的。
  • 是实现线程同步的关键字。
  • 修饰执行的代码块必须获得对象sync Object。
  • 执行前先获得类或者对象的锁,直到执行完才能释放,中间过程无法被中断

原理实现

Mark Word
  • Mark Word,用于存储对象自身运行时的数据,如哈希码(Hash Code),GC分代年龄,锁状态标志,偏向线程ID、偏向时间戳等信息,它会根据对象的状态复用自己的存储空间。它是实现轻量级锁和偏向锁的关键
  • 类型指针,对象会指向它的类的元数据的指针,虚拟机通过这个指针确定这个对象是哪个类的实例。
  • Array length,如果对象是一个数组,还必须记录数组长度的数据。

Synchronized关键字实现原理_第1张图片

Monitor
  • 上面经常提到monitor,它内置在每一个对象中,任何一个对象都有一个monitor与之关联

你可能感兴趣的:(小小的天,天天JAVA,Java,java,开发语言,后端)