轻量级锁_Java中的轻量级锁
时间: 2023-06-20 13:04:05 浏览: 103
在 Java 中,轻量级锁是一种优化机制,它是在对象头上使用 CAS 操作实现的。在多线程环境下,多个线程同时访问同一个对象时,会发生竞争,如果一个线程已经持有了该对象的锁,其他线程就必须等待,直到锁被释放。
为了减少锁竞争的开销,Java 引入了轻量级锁机制,当一个线程获取锁时,它会将对象头中的锁记录下来,然后使用 CAS 操作将对象头中的 Mark Word 修改为指向锁记录的指针。如果 CAS 操作成功,该线程就获得了该对象的轻量级锁,可以直接访问对象,而不必进入重量级锁状态。如果 CAS 操作失败,说明有其他线程竞争锁,当前线程就需要膨胀为重量级锁,进入阻塞状态,等待其他线程释放锁。
轻量级锁的优点在于,它避免了多个线程同时争夺同一把锁时的竞争和切换的开销。因为轻量级锁不需要阻塞线程,所以在锁竞争不激烈的情况下,它的性能比重量级锁要好很多。但是,当锁竞争激烈时,轻量级锁的性能就会下降,因为它需要不断尝试 CAS 操作,而这个过程会消耗 CPU 时间。
阅读全文