码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-01-14 00:07:19      阅读:99      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!