绕不开的"锁"(五)

135 阅读1分钟

目录

轻量级锁

当多个线程开始竞争时,都试图使用CAS来获取这把锁,因为此时第一个获得该锁的线程ID已经被设置到了mark word中,而偏向锁不会自己释放,所以即使当前线程已经完成了工作,它的ID还是在mark word中. 这不是开玩笑吗? 其他线程一直在原地打转呢,它们不要面子啊! 所以只能通过升级为轻量级锁来协调这些线程.具体过程如下:

升级过程

TO DO

参考:

Eliminating Synchronization-Related Atomic Operations with Biased Locking and Bulk Rebiasing

Synchronization and Object Locking

Interpreters, compilers, and the Java Virtual Machine

Proceedings of the Java™ Virtual Machine Research and Technology Symposium (JVM '01)

Evaluating and improving biased locking in the HotSpot virtual machine

Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)