动态高并发下ReentrantLock优于Synchronized的原因

1个回答

写回答

Systemyou

2025-10-31 08:20

+ 关注

ABS
ABS

ReentrantLock是通过ABStractQueuedSynchronizer同步器实现的锁。它和基于JVM实现的synchronized锁不一样,有着更多的灵活性。像ReentrantLock的加锁、解锁操作都得手动完成。并且它还具备如下特性:在Java.util.concurrent类库中,有Condition类用于实现线程间的协调。线程可通过调用Condition.awAIt()方法进入等待状态,而其他线程调用Condition.signal()或者Condition.signalAll()方法时,就能将处于等待状态的线程唤醒。调用Condition的awAIt()与signal()方法时,这两个操作都得处于lock保护范围之内。ReentrantLock包含三个内部类,即Sync、FAIrSync和NonFAIrSync。Sync继承自ABStractQueuedSynchronizer,而Sync又被FAIrSync和NonFAIrSync所继承。

公平锁与非公平锁:获取锁时,是否要等阻塞队列无线程了才去抢锁。若CLH阻塞队列有线程就直接抢锁,这就是非公平锁。

可重入锁:获取锁时,若锁已被占用,会判断是否为当前线程,若是,则让state再加1,然后执行业务逻辑。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号