偏向锁的撤销 是等到有竞争出现的时候才释放 锁。需要等到全局安全点 就是此时没有字节码正在执行,它会首先暂停拥有偏向锁的线程,然后检查持有偏向锁的线程是否或者,如果线程不处于活动状态,则把对象头设成无锁状态(这样别的线程就可以继续使用偏向锁) 别的线程来的时候 如果发现对象头的ID 不是自己 他会用CAS尝试替换对象头中的线程ID 可能是用CAS(无锁,该线程的 ID) 如果还活着 偏向锁的栈会被执行,这样对象头中的Mark word 要么重新偏向别的线程
要么就标记对象不适合作为偏向锁
https://blog.youkuaiyun.com/qq_36270361/article/details/107708132可见性: