美文网首页
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第一节

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