Java之Synchronized实现原理

Java并发编程 Synchronized及其实现原理 - 明耀 - 博客园

monitorenter 和 monitorexit 指令

由运行时常量池中方法表结构的 ACC_SYNCHRONIZED 标志来隐式实现

Monior:我们可以把它理解为一个同步工具

Monitor 是线程私有的数据结构,每一个线程都有一个可用monitor record列表,同时还有一个全局的可用列表。每一个被锁住的对象都会和一个monitor关联(对象头的MarkWord中的LockWord指向monitor的起始地址),同时monitor中有一个Owner字段存放拥有该锁的线程的唯一标识

自旋锁 获取锁的时候做循环50-100次,如果拿不到锁就挂起。

偏向锁 锁不仅不存在多线程竞争,而且总是由同一线程多次获得,

如果一个线程获得了锁,那么锁就进入偏向模式 这个线程再次请求锁时,无需再做任何同步操作

你可能感兴趣的:(Java之Synchronized实现原理)