美文网首页
AbstractQueuedSynchronizer第一节

AbstractQueuedSynchronizer第一节

作者: 永远的太阳0123 | 来源:发表于2018-10-25 17:32 被阅读0次

1.AQS的属性
(1)本类中的属性

    // 等待队列的头结点。可以将其理解为占用当前锁的线程。
    private transient volatile Node head;
    // 等待队列的尾节点。每个新的等待结点都会插入到尾部,形成一个隐式的链表。
    private transient volatile Node tail;
    // 当前锁的状态。等于0代表当前锁没有被占用,大于0代表当前锁被某个线程占用。
    // 之所以说大于0,而不是等于1,是因为锁可重入。
    private volatile int state;

(2)父类中的属性
AbstractQueuedSynchronizer类继承了AbstractOwnableSynchronizer类。

    /**
     * The current owner of exclusive mode synchronization.
     */

// 代表当前持有独占锁的线程,举个最重要的使用例子,因为锁可以重入
// reentrantLock.lock()可以嵌套调用多次,所以每次用这个来判断当前线程是否已经拥有了锁
// if (currentThread == getExclusiveOwnerThread()) {state++}
    // 
    private transient Thread exclusiveOwnerThread;

相关文章

  • AbstractQueuedSynchronizer第一节

    1.AQS的属性(1)本类中的属性 (2)父类中的属性AbstractQueuedSynchronizer类继承了...

  • AQS

    AbstractQueuedSynchronizer源码 AbstractQueuedSynchronizer(A...

  • 1.AbstractQueuedSynchronizer源码分析

    AbstractQueuedSynchronizer AbstractQueuedSynchronizer是什么,...

  • AbstractQueuedSynchronizer

    理解多线程的并发锁,可结合多进程的分布式锁(如Zookeeper的互斥锁、读写锁的实现原理),本质是相通的 介绍 ...

  • AbstractQueuedSynchronizer

    AbstractQueuedSynchronizer ReentrantLock主要内部通过Sync来完成锁的实现...

  • AbstractQueuedSynchronizer

    AQS简介 JUC将AQS定位为一个模板方法,它是一个抽象类,不可被实例化,它的设计之处是为了让子类通过继承的方式...

  • AbstractQueuedSynchronizer

    提供了实现阻塞锁和相关同步器依靠先入先出(FIFO)等待队列(信号量,事件等)的框架. 此类设计对于大多数种类的依...

  • AbstractQueuedSynchronizer

    AQS简介 什么是AQS(抽象队列同步器) 详细的可以看源码中的类注释 acquire方法执行逻辑(独占锁的获取)...

  • AbstractQueuedSynchronizer

    1.概述 AbstractQueuedSynchronizer(抽象队列同步器,以下简称AQS)内部维护一个CLH...

  • AbstractQueuedSynchronizer

    AbstractQueuedSynchronizer 学习AQS的必要性 队列同步器AbstractQueuedS...

网友评论

      本文标题:AbstractQueuedSynchronizer第一节

      本文链接:https://www.haomeiwen.com/subject/vhuctqtx.html