专业的编程技术博客社区

网站首页 > 博客文章 正文

阿里巴巴Java性能调优实战:深入了解Lock同步锁的优化方法

baijin 2024-10-16 07:37:39 博客文章 15 ℃ 0 评论

多线程之锁优化:深入了解Lock 同步锁的优化方法

今天这讲我们继续来聊聊锁优化。上一讲我重点介绍了在 JVM 层实现的 Synchronized 同步锁的优化方法,除此之外,在 JDK1.5 之后,Java 还提供了 Lock 同步锁。那么它有什么优势呢?

从性能方面上来说,在并发量不高、竞争不激烈的情况下, Synchronized 同步锁由于具有分级锁的优势,性能上与 Lock 锁差不多;但在高负载、高并发的情况下, Synchronized 同步锁由于竞争激烈会升级到重量级锁,性能则没有 Lock 锁稳定。

Lock 锁的实现原理

Lock 锁是基于 Java 实现的锁,Lock 是一个接口类,常用 的实现类有 ReentrantLock、 ReentrantReadWriteLock(RRW),它们都是依赖 AbstractQueuedSynchronizer(AQS)类实现的。 AQS 类结构中包含一个基于链表实现的等待队列(CLH 队列),用于存储所有阻塞的线程,AQS 中还有一个 state 变量,该变量对 ReentrantLock 来说表示加锁状态。该队列的操作均通过 CAS 操作实现,我们可以通过一张图 来看下整个获取锁的流程。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表