AQS同步队列与条件队列的关系

作者: 秋名山车神_f776 | 来源:发表于2020-11-03 09:26 被阅读0次

一、关系

同步队列节点来源:

1、同步队列依赖一个双向链表来完成同步状态的管理,当前线程获取同步状态失败 后,同步器会将线程构建成一个节点,并将其加入同步队列中。

2、通过signalsignalAll将条件队列中的节点转移到同步队列。(由条件队列转化为同步队列)

这里写图片描述

条件队列节点来源:

1、调用await方法阻塞线程;
2、当前线程存在于同步队列的头结点,调用await方法进行阻塞(从同步队列转化到条件队列)

可总结为:
1、同步队列与条件队列节点可相互转化
2、一个线程只能存在于两个队列中的一个

二、实例说明

1、假设初始状态如下,节点A、节点B在同步队列中。

这里写图片描述

2、节点A的线程获取锁权限,此时调用await方法。节点A从同步队列移除, 并加入条件队列中。

这里写图片描述

3、调用 signal方法,从条件队列中取出第一个节点,并加入同步队列中,等待获取资源

这里写图片描述

本文图片来源:
http://javadoop.com/post/AbstractQueuedSynchronizer-2
http://blog.csdn.net/tb3039450/article/details/69056169

相关文章

  • 2020-06-14_关于AQS条件队列与同步队列分析

    关于AQS条件队列与同步队列分析 1 概述 本文主要演示一下Condition中同步队列和条件队列是如何交互的。 ...

  • Day30

    AQS 同步等待队列 & 条件等待队列 ReentrantLock同步执行,类似synchronized可重入 s...

  • AQS同步队列与条件队列的关系

    一、关系 同步队列节点来源: 1、同步队列依赖一个双向链表来完成同步状态的管理,当前线程获取同步状态失败 后,同步...

  • 六、AQS源码分析

    〇、前置问题 同步队列,等待队列和条件队列的区别? AQS和monitor区别?队列的对比? 类继承结构? 一、A...

  • AbstractQueuedSynchronizer 队列同步器

    AbstractQueuedSynchronizer 队列同步器(AQS) 队列同步器 (AQS), 是用来构建锁...

  • 公平锁和非公平锁

    AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。CLH同步队列是一个FIFO双向队列,AQS依赖它来完...

  • AQS框架

    AQS(AbstractQueuedSynchronized)队列同步器理解AQS需要知道1.队列结构,2.同步的...

  • Java-多线程-ScheduledThreadPoolExec

    定时线程池类的类结构图 一、条件锁 条件锁框架中对应的AQS框架中,条件队列与同步队列都用了起来。 1、T1刚来,...

  • AbstractQueuedSynchronizer (AQS)

    双队列 在AQS中,存在两个队列 等待队列:用于挂起当前线程,等待某个条件满足后唤醒或是被中断。 同步队列:多线程...

  • 如何封装同步队列的线程池

    同步队列 看到同步队列,第一想到的是AQS。队列同步器(AQS)是用来构建锁或者其他同步组件的基础框架,使用一个i...

网友评论

    本文标题:AQS同步队列与条件队列的关系

    本文链接:https://www.haomeiwen.com/subject/mkhbvktx.html