偏向锁:当没有竞争出现时,默认会使用偏向锁;这样做的假设是基于很多应用场景中,大部分对象生命周期中最多会被一个线程锁定,使用偏向锁可以降低无竞争开销。
轻量级锁:如果有另外的线程试图锁定某个已经被偏向过的对象,就需要开销(revoke)偏向锁,并切换到轻量级锁实现。
重量级锁:轻量级锁依赖CAS操作Mark Word来试图获取锁,如果重试成功,就使用普通的轻量级锁,否则,进一步升级为重量级锁。
微信扫一扫
偏向锁:当没有竞争出现时,默认会使用偏向锁;这样做的假设是基于很多应用场景中,大部分对象生命周期中最多会被一个线程锁定,使用偏向锁可以降低无竞争开销。
轻量级锁:如果有另外的线程试图锁定某个已经被偏向过的对象,就需要开销(revoke)偏向锁,并切换到轻量级锁实现。
重量级锁:轻量级锁依赖CAS操作Mark Word来试图获取锁,如果重试成功,就使用普通的轻量级锁,否则,进一步升级为重量级锁。
相关推荐