AQS框架为什么要先初始化一个空的node放到队列最前面
时间: 2023-06-07 18:07:10 浏览: 306
AQS(AbstractQueuedSynchronizer)框架是 Java 中用于实现同步器的基础框架,它采用了一种基于排队的机制来维护等待线程集合的数据结构。在 AQS 的实现中,每个等待线程都被封装成一个节点(Node),这些节点按照一定的规则组成一个双向队列。在 AQS 的初始化过程中,为了方便后续线程的加入,会初始化一个空节点放在队列最前面,这个节点称为“哨兵节点”(sentinel node)。哨兵节点本身不代表任何一个线程,只是为了简化队列逻辑而存在。当队列里没有任何等待线程时,只有哨兵节点一个节点。加入新的等待线程时,它会被封装成一个新的节点插入到队列的末尾,即哨兵节点的前一个节点。这样可以保证双向队列的头节点始终是哨兵节点,方便队列的遍历和元素添加。
阅读全文