当偏向的线程退出同步块时,如果发现锁还没有其他线程在等待,那么会将锁的状态重置为none。如果发现有其他线程在等待,会释放锁,让等待线程获取。...其他线程要获取锁时,会先检查对象头的锁状态,如果发现锁已经被占用,那么会使用CAS操作进行抢占,如果成功则获取到锁,失败会加入到阻塞队列进行等待。...当前线程退出同步块时,会使用CAS操作释放锁,将对象头设置为unlocked状态,同时唤醒阻塞队列中的一个等待线程。...其他线程要获取锁时,会发现对象头的锁定状态,也会进入内核态挂起。
当锁定的线程退出同步块时,会标记对象头为解锁状态,然后唤醒一个等待线程。...锁定超时:可以通过-XX:MonitorTimeout=x设置重量级锁定超时时间,以避免线程因锁定过长出现死锁现象。