Java并发包下锁学习第三篇-锁是怎么维护内部队列的
从源码学习Java并发的锁是怎么维护内部线程队列的在上一篇文章中,凯哥对同步组件基础框架-AbstractQueuedSynchronizer(AQS)做了大概的介绍。我们知道AQS能够通过内置的FIFO队列来完成资源获取线程的排队工作。那么AQS是怎么来维护这个排队工作的呢?今天我们就来扒一扒AQS源码。从源码中来看看是怎么维护对了的。本篇是《凯哥(凯哥Java:kagejava)并发编程学习》
从源码学习Java并发的锁是怎么维护内部线程队列的
在上一篇文章中,凯哥对同步组件基础框架- AbstractQueuedSynchronizer(AQS)做了大概的介绍。我们知道AQS能够通过内置的FIFO队列来完成资源获取线程的排队工作。那么AQS是怎么来维护这个排队工作的呢?今天我们就来扒一扒AQS源码。从源码中来看看是怎么维护对了的。
本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《Lock系列》教程的第一篇:《Java并发包下锁学习第三篇-从源码学习Java并发是怎么维护内部线程队列的》。
在上篇我们知道AQS内部有个内部类-Node对象。这个对象就是来维护线程对资源访问的排队工作的。具体怎么操作的呢?本文主要内容:Node节点介绍;在同步器中怎么为维护排队的流程图。
一:Node节点对象介绍
在AQS内部有个Node对象的内部类。我们来看看这个对象都有哪些属性:
简化后:
static final class Node {
//线程等待状态
volatile int waitStatus;
//当前节点的上一个节点
volatile Node prev;
//当前节点对象
原创不易,完成人机校验,阅读全文