偏向锁:是当没有多个线程竞争锁资源时,会开启偏向锁为拥有锁的对象标识上第一个拿到这个锁的线程的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

posted on 2020-08-19 20:50  奔跑的小一  阅读(273)  评论(0)    收藏  举报