AbstractQueuedSynchronizer第一节
1.AQS的属性
(1)本类中的属性
// 等待队列的头结点。可以将其理解为占用当前锁的线程。
private transient volatile Node head;
// 等待队列的尾节点。每个新的等待结点都会插入到尾部,形成一个隐式的链表。
private transient volatile Node tail;
// 当前锁的状态。等于0代表当前锁没有被占用,大于0代表当前锁被某个线程占用。
// 之所以说大于0,而不是等于1,是因为锁可重入。
private volatile int state;
【AbstractQueuedSynchronizer第一节】(2)父类中的属性
AbstractQueuedSynchronizer类继承了AbstractOwnableSynchronizer类。
/**
* The current owner of exclusive mode synchronization.
*/// 代表当前持有独占锁的线程,举个最重要的使用例子,因为锁可以重入
// reentrantLock.lock()可以嵌套调用多次,所以每次用这个来判断当前线程是否已经拥有了锁
// if (currentThread == getExclusiveOwnerThread()) {state++}
//
private transient Thread exclusiveOwnerThread;
推荐阅读
- 一个人的旅行,三亚
- 第6.2章(设置属性)
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 一个小故事,我的思考。
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第三节|第三节 快乐和幸福(12)
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- android第三方框架(五)ButterKnife
- 开学第一天(下)
- 一个人的碎碎念