BiasedLock
2016-06-12 22:44:08 0 举报
BiasedLock是Java并发包中的一个类,它实现了一种被称为”偏向锁”的同步机制。这种机制的主要目的是消除无竞争情况下的同步开销,从而提高性能。当一个线程首次访问同步块时,它会尝试获取对象的偏向锁。如果成功,该线程将一直持有这个锁,直到它主动释放或出现竞争。这样,在没有竞争的情况下,线程不需要进行传统的重量级锁获取和释放操作,从而大大提高了性能。然而,如果多个线程同时竞争同一个锁,BiasedLock会撤销偏向,升级为轻量级锁或重量级锁,以确保同步的正确性和安全性。
作者其他创作
大纲/内容
锁释放
替换是否成功
对象标记为偏向模式,跳过轻量级锁的同步操作
失败
进入锁
CAS替换对象Mark Word中的ThreadID为当前线程
恢复挂起的所有线程
挂起持有偏向锁线程
将对象Mark Word中的Lock Record指针指向当前线程栈中的Lock Record,Lock Record中的Owner指向Mark Word
运行代码
标记对象为非偏向模式
成功
0 条评论
下一页
为你推荐
查看更多