java源码学习(java-src)之AbstractQueuedSynchronizer (AQS)以及模板设计模式-1
如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。
详细内容以及脑图链接地址:https://mp.weixin.qq.com/s/j1ORbWwmJC-2KEEFKB5mFA
/**
* Provides a framework for implementing blocking locks and related
* synchronizers (semaphores, events, etc) that rely on
* first-in-first-out (FIFO) wait queues. This class is designed to
* be a useful basis for most kinds of synchronizers that rely on a
* single atomic {@code int} value to represent state. Subclasses
* must define the protected methods that change this state, and which
* define what that state means in terms of this object being acquired
* or released. Given these, the other methods in this class carry
* out all queuing and blocking mechanics. Subclasses can maintain
* other state fields, but only the atomically updated {@code int}
* value manipulated using methods {@link #getState}, {@link
* #setState} and {@link #compareAndSetState} is tracked with respect
* to synchronization.
【翻译】该类提供了一个实现阻塞锁和相关异步器(信号量,事件等)的框架,该类依赖于FIFO(先进先出)的队列。这个类对那些依赖与单一的原子的int值来作为状态的异步器来说是一个有用的基础类。子类必须(注意是必须)定义受保护的方法来改变state的值,并且这个子类定义的这个state的状态意味着子类对象的获取或释放。
【理解】子类实现这个类之后,实现了一些方法,这些方法中可以操作这个state变量,这个变量的的状态意味着这个类是获取了还是释放了这个state变量。如果是state=0表示我们没有获取到该变量,当前线程放入到FIFO队列中。如果state=1表示我获取到了state,可以执行后续操作。
【翻译】已经给出的这些类以及这个类中的其他的方法执行所有的队列和阻塞指令。子类可以维护其他的状态字段,但是只有这个通过getState、setState和compareAndSetState方法来原子操作的int值,会被有关的同步跟踪。
【理解】我们可以自定义状态字段,但是在同步类的实现中我们只需要跟踪int value就好了,只要知道这个int的值,我们就可以判断是当前线程是否获得了锁,至此可以判断是否将当前线程放入队列去等待。
如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。
详细内容以及脑图链接地址:https://mp.weixin.qq.com/s/j1ORbWwmJC-2KEEFKB5mFA
本文地址:https://blog.csdn.net/oMengQiQi1/article/details/111998636
上一篇: 正则表达式查找相似单词的方法