0%

轻量级锁在没有竞争的时候(就自己这个线程),每次冲突依然需要执行 CAS 操作。

Java6 引入偏向锁进行优化:只有第一次使用 CAS 将线程 ID 设置到对象的 Mark Word 头,之后发现这个线程 ID 是自己的表示没有竞争,就不用重新 CAS。以后只要不发生竞争,这个对象就归线程所有。

偏向锁的使用场景是,当多线程中,同步代码块只有一个线程操作的时候,才会考虑用这个。

阅读全文 »