java并发之父_Java并发控制的基础类AbstractQueuedSynchronizer的实现原理简介

1.引子

Lock接口的主要实现类ReentrantLock 内部主要是利用一个Sync类型的成员变量sync来委托Lock锁接口的实现,而Sync继承于AbstractQueuedSynchronizer,且大多数java.util.concurrent包下的并发工具类都是利用AbstractQueuedSynchronizer同步器实现的。要想弄明白并发的原理,必须先搞清楚AbstractQueuedSynchronizer的实现机制。

20200113224332951406.png

2.同步器AbstractQueuedSynchronizer的父类

AbstractQueuedSynchronizer的直接父类是AbstractOwnableSynchronizer。

20200113224333272707.png

AbstractOwnableSynchronizer的类定义

public abstract classAbstractOwnableSynchronizer

implements java.io.Serializable {private static final long serialVersionUID = 3737899427754241961L;protectedAbstractOwnableSynchronizer() {

}privatetransient Thread exclusiveOwnerThread;protected final voidsetExclusiveOwnerThread(Thread thread) {

exclusiveOwnerThread=thread;

}protectedfinal Thread getExclusiveOwnerThread() {returnexclusiveOwnerThread;

}

}

这个类中只有Thread类型exclusiveOwnerThread成员变量的一对setter/getter方法,用来设置/获取独占线程,正如其名中的“Ownable",此类就是"一个线程可能专有的同步器。"这一对setter/getter对于独占锁类型的并发工具特别有用。而ReentrantLock是一个可重入排他锁(排他锁又称独占锁),因此ReentrantLock这类中常用到这两个方法。

同步器AbstractQueuedSynchronizer依赖内部的同步队列(一个FIFO双向队列)来完成同步状态的管理

原文:https://www.cnblogs.com/gocode/p/12189741.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值