AQS抽象队列同步器

AbstractQueuedSynchronizer 抽象的队列同步器

AQS是volatile+CAS机制实现的锁模板,保证了代码的同步性和可见性。AQS定义了一套多线程访问共享资源的同步器框架,封装了线程阻塞等待挂起,解锁其他线程的逻辑,

AQS子类只需要根据状态变量,判断是否可获取锁,是否释放锁,使用LockSupport挂起,唤醒线程即可。

 

 AQS内部维护一个同步队列(CFH队列)(FIFO),元素就是包装了线程的Node。

同步队列中首节点是获取到锁的节点,它在释放锁时会唤醒后继节点,后继节点获取到锁的同时,会把自己设为首节点。

线程会先尝试获取锁,失败则封装成Node,CAS加入同步队列的尾部。在加入同步队列尾部时,会判断先驱节点是否是Head节点,并尝试加锁(可能先驱节点刚好释放锁),

否则线程进入阻塞等待。

posted @   wwwwwwwty  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示