偏向锁
偏向锁的思想很简单,就是偏向于第一个获取锁的线程,当其他线程要获取锁时,会在CAS操作中失败,然后挂起等待,直到第一个线程释放锁。...当前线程退出同步块时,会使用CAS操作释放锁,将对象头设置为unlocked状态,同时唤醒阻塞队列中的一个等待线程。...被唤醒的线程会重新标记对象头为锁定状态,然后继续执行同步块中的内容。
重量级锁的优点是可以解决轻量级锁中的ABA问题,但是其性能消耗也是最大的。...JMC中打开“标记对象(Mark Objects)”视图,可以观察到对象头的状态在变化:
初始为none状态,表示无锁
第一个线程进入同步块后变为biased状态,表示偏向锁定
多线程访问后变为轻量级锁...锁定超时:可以通过-XX:MonitorTimeout=x设置重量级锁定超时时间,以避免线程因锁定过长出现死锁现象。