Reentrantlock是基于AQS抽象类实现的,内部实现了两个队列,同步队列、条件队列
同步队列是双向链表,里面储存的是处于等待状态的线程,正在排队等待唤醒去获取锁,而条件队列是一个单向链表,里面储存的也是处于等待状态的线程,只不过这些线程唤醒的结果是加入到同步队列的队尾。
AQS所做的就是管理这两个队列里面线程之间的等待-唤醒的工作
独占模式和共享模式,区别就在于AQS在唤醒线程节点的时候是不是传递唤醒,分别对应独占锁和共享锁。ReentrantLock重写AQS的tryAcquire和tryRelease方法实现lock和unlock
ReentrantLock实现了lock接口,然后有三个内部类,Sync继承自AQS,另外两个fairSync和NonfairSync继承自sync,分别用来实现公平锁和非公平锁Reentranlock实现AQS的独占锁,是悲观锁
全部评论

相关推荐

06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-16 12:18
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务