说说你对AQS的理解?

编程入门 行业动态 更新时间:2024-10-28 06:24:06

说说<a href=https://www.elefans.com/category/jswz/34/1749963.html style=你对AQS的理解?"/>

说说你对AQS的理解?

分析&回答


AQS就是一个并发包的基础组件,用来实现各种锁,各种同步组件的。它包含了state变量、加锁线程、等待队列等并发中的核心组件。

AQS对象内部维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。state代表了加锁的状态。加锁 state ++ 释放锁state – 。如下图:

AQS定义两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)。不同的自定义同步器争用共享资源的方式也不同。自定义同步器在实现时只需要实现共享资源state的获取与释放方式即可,至于具体线程等待队列的维护(如获取资源失败入队/唤醒出队等),AQS已经在顶层实现好了。

反思&扩展


有了AQS的顶层实现,我们再实现锁的时候方式基本都差不多,不同的地方就在获取-释放资源的方式tryAcquire-tryRelelase。

说说AQS中的独占锁

说说AQS中的共享锁


刷刷面试:一站式解决面试问题,如有好的面试知识或技巧期待您的共享!

更多推荐

说说你对AQS的理解?

本文发布于:2023-07-01 05:40:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/971507.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:你对   AQS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!