首页 > 编程语言 > 详细

Java并发控制的基础类AbstractQueuedSynchronizer的实现原理简介

时间:2020-01-13 22:43:33      阅读:147      评论:0      收藏:0      [点我收藏+]

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的实现原理简介

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!