AQS双队列作用


今天依旧是吹爆lau哥的一天~

 

众所周知(客套一下),AQS是使用了同步队列+条件队列来实现锁机制的。

那么为什么要使用两个队列呢?

我看着AQS的源码看了两天多,记了这里忘了那里,会了这里懵了那里,最后看完了,脑袋浆糊了。

然后去问大佬。

大佬做了个简单的比喻。(下面是转述,不是大佬的原话,原话更加清晰,只可惜公司电脑与手机无法沟通,所以我转述一下)

说这个机制就像是上厕所,大家都在排队上厕所,但是坑就只有一个,每个人都在自旋,判断自己是不是第一个,如果是第一个就去尝试获得厕所的使用权,当正在上厕所的人上完了,释放厕所使用权,那么他就可以进去,然后下一个变成第一个,等待。这段就是同步队列的基本逻辑。

但是上厕所也有大号小号,所以厕所管理员会把不那么急切的上小号的人放到条件队列里面去。当急切的人上完了,再把他们移转导同步队列去,按照之前的逻辑进行获取。

坑==资源

大号排队==同步队列

小号排队==条件队列


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM