偏向锁:是当没有多个线程竞争锁资源时,会开启偏向锁为拥有锁的对象标识上第一个拿到这个锁的线程的ID,当这个线程撤销锁后,
中途没有其他线程来获取这个对象的锁资源,下次再来时就会直接执行该锁资源的内容而不需要再获取,也不会有同步的性能消耗。
轻量级锁:当有两个及以上线程同时竞争锁资源时,会将该对象的偏向锁膨胀为轻量级锁(升级锁会找全局安全点:所有线程停止字节码执行),让每个线程进行CAS自旋来获取锁资源。
重量级锁:线程不断CAS自旋来尝试获取锁资源,一定次数后还没有获取到锁资源就会将锁膨胀为重量级锁,即synchronized(
1)Wait Set:哪些调用 wait 方法被阻塞的线程被放置在这里;
2) Contention List:竞争队列,所有请求锁的线程首先被放在这个竞争队列中;
3) Entry List:Contention List 中那些有资格成为候选资源的线程被移动到 Entry List 中;
4) OnDeck:任意时刻,最多只有一个线程正在竞争锁资源,该线程被成为 OnDeck;
5) Owner:当前已经获取到所资源的线程被称为 Owner;
6) !Owner:当前释放锁的线程)
https://blog.csdn.net/zmh458/article/details/93053867