标签:bst mamicode 定义 设置 syn 依赖 java并发 version 就是
1.引子
Lock接口的主要实现类ReentrantLock 内部主要是利用一个Sync类型的成员变量sync来委托Lock锁接口的实现,而Sync继承于AbstractQueuedSynchronizer,且大多数java.util.concurrent包下的并发工具类都是利用AbstractQueuedSynchronizer同步器实现的。要想弄明白并发的原理,必须先搞清楚AbstractQueuedSynchronizer的实现机制。
2.同步器AbstractQueuedSynchronizer的父类
AbstractQueuedSynchronizer的直接父类是AbstractOwnableSynchronizer。
AbstractOwnableSynchronizer的类定义
public abstract class AbstractOwnableSynchronizer implements java.io.Serializable { private static final long serialVersionUID = 3737899427754241961L; protected AbstractOwnableSynchronizer() { } private transient Thread exclusiveOwnerThread; protected final void setExclusiveOwnerThread(Thread thread) { exclusiveOwnerThread = thread; } protected final Thread getExclusiveOwnerThread() { return exclusiveOwnerThread; } }
这个类中只有Thread类型exclusiveOwnerThread成员变量的一对setter/getter方法,用来设置/获取独占线程,正如其名中的“Ownable",此类就是"一个线程可能专有的同步器。"这一对setter/getter对于独占锁类型的并发工具特别有用。而ReentrantLock是一个可重入排他锁(排他锁又称独占锁),因此ReentrantLock这类中常用到这两个方法。
同步器AbstractQueuedSynchronizer依赖内部的同步队列(一个FIFO双向队列)来完成同步状态的管理
Java并发控制的基础类AbstractQueuedSynchronizer的实现原理简介
标签:bst mamicode 定义 设置 syn 依赖 java并发 version 就是
原文地址:https://www.cnblogs.com/gocode/p/12189741.html