Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍
Java并发包下锁学习第二篇队列同步器还记得在第一篇文章中,讲到的locks包下的类结果图吗?如下图:从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本文中,凯哥就用AQS来代替这个类)。我们先来了解这个类。对这个类了解之后,学习后面的会更容易了。本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《Lock系列》教程的第一篇:《Java并发包
Java并发包下锁学习第二篇队列同步器
还记得在第一篇文章中,讲到的locks包下的类结果图吗?如下图:
从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本文中,凯哥就用AQS来代替这个类)。我们先来了解这个类。对这个类了解之后,学习后面的会更容易了。
本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《Lock系列》教程的第一篇:《Java并发包下锁学习第二篇:队列同步器》。
本文主要内容:同步器介绍;同步器和锁的关系;AQS对象构成。
一:队列同步器
AQS是创建锁或者是同步组件的基础框架,其内部维护了一个FIFO队列来维护线程对资源获取的顺序。
定义了若干同步状态获取和释放的方法来供自定义组件使用。如果获取状态(getStatus())、设置状态(setStatus())以及使用CAS设置当前线程状态来确保原子性的。这种设计思想是基于模板方法模式来设计的。使用者(或子类)需要继承同步器并重写方法。
因为同步器支持独占式获取当前线程状态,也支持共享式的获取这个同步状态,所以这
原创不易,完成人机校验,阅读全文