juc下面的locks包的结构

首先这个包中有三个接口,且都不继承任何接口

 

1.AQS相关类

{@link AbstractQueuedSynchronizer}的版本,其中同步状态保持为{@code long}。此类具有与{@codeAbstractQueuedSynchronizer}完全相同的结构,属性和方法,除了所有与状态相关的参数和结果均定义为{@code long}而不是{@code int}。创建诸如以下的同步器时,此类可能很有用需要64位状态的多级锁和屏障。

也就是说这两个子类结构功能完全一样除了字段的属性。

AbstractQueuedSynchronizer里面的逻辑是实现基于jdk的锁,lock的关键。

2.Lock接口

直接实现类只有ReentrantLock(和ReentrantReadWriteLock中的两个静态内部类),其实这里面远远不止的一个Lock接口

but它并不是只与这个包中Lock接口相关联在这个类中有一个抽象静态内部类

继承类AQS类实现同步,也就是说ReentrantLock是通过AQS的原理实现同步?

再往下看

ReentrantLock类中还有两个内部类分别是

NonfairSync和 FairSync 都继承了自己内部之前定义的Sync类,分别用来实现公平锁和非公平锁

 

3.ReadWriteLock接口

实现类为  ReentrantReadWriteLock,它有这些内部类

注意:其中Sync与重入锁不同的是它还有两个内部类,与多线程threadlocal,反序列化相关。

此外多了两个静态类

ReadLock和WriteLock 均实现了Lock接口

4.Condition接口

主要在AbstractOwnableSynchronizer的两个子类中实现

5.最后说一下两个相对独立的LockSupport和StampedLock

StampedLock:1.8引入的增强的读写锁,为了解决老版本的读写锁可能产生的写饥饿问题,这里读写不互斥,如果在读的过程中进行了写那么就再读一次。

LockSupport:用于创建锁和其他同步类的基本线程阻塞原语。(作者原话的翻译)里面功能类似于  notify,wait但是有一定的优化。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值