轻量级锁、重量级锁、偏向锁
时间: 2023-10-03 17:03:33 浏览: 125
【Java面试】为什么引入偏向锁、轻量级锁,介绍下升级流程.doc
轻量级锁、重量级锁和偏向锁是Java中的三种不同的锁机制。轻量级锁是一种乐观锁,用于在多线程环境下提高并发性能。当锁竞争不激烈时,轻量级锁使用CAS(Compare and Swap)操作来获取锁,避免了线程阻塞,提升了性能。然而,如果锁竞争激烈,轻量级锁会膨胀为重量级锁。
偏向锁是在没有竞争的情况下,为了进一步提高性能而引入的机制。偏向锁允许第一个获得锁的线程在接下来的执行中,无需再进行同步操作,从而减少了不必要的锁竞争。当有其他线程试图获取偏向锁时,偏向锁会升级为轻量级锁或重量级锁。
重量级锁是一种传统的互斥锁,它使用操作系统原语(例如互斥量)来实现线程阻塞和唤醒,确保同一时间只有一个线程可以访问被锁定的资源。重量级锁适用于锁竞争激烈的场景,但由于涉及到内核态和用户态之间的切换,会带来较大的性能开销。
总结起来,轻量级锁和偏向锁都是为了提高并发性能而引入的机制,轻量级锁适用于锁竞争不激烈的场景,而偏向锁适用于没有竞争的情况下。重量级锁适用于锁竞争激烈的场景,但会带来较大的性能开销。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [浅谈偏向锁、轻量级锁、重量级锁](https://blog.csdn.net/yaojiqic/article/details/124619021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [Java中的偏向锁,轻量级锁, 重量级锁解析](https://blog.csdn.net/lengxiao1993/article/details/81568130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [Java锁的升级策略 偏向锁 轻量级锁 重量级锁](https://download.csdn.net/download/weixin_38512659/12749004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文