一、 写在前面
这篇文章,我们来聊聊面试时一个比较有杀伤力的问题:聊聊你对AQS的理解?
之前有同学反馈,去互联网公司面试,面试官聊到并发时就问到了这个问题。当时那位同学内心估计受到了一万点伤害。。。
因为首先,很多人可能连AQS是什么都不知道。或者仅仅是听说过AQS这个名词,但是可能连全称怎么拼写都不知道。
更有甚者,可能会说:AQS?是不是一种思想?我们平时开发怎么来用AQS?
总结起来,很多同学都对AQS有一种云里雾里的感觉,如果用搜索引擎查一下AQS是什么,估计看几篇文章就直接放弃了,因为密密麻麻的文字,实在是看不懂!
所以基于上述痛点,这篇文章就用最简单的大白话配合N多张手绘图,给大家讲清楚AQS到底是什么?
让各位同学面试被问到这个问题时,不至于不知所措。
二、ReentrantLock和AQS的关系
首先来看看,如果用java并发包下的ReentrantLock来加锁和释放锁,是个什么样的感觉?
这个学过java的同学应该都会吧,毕竟是java并发基本API的使用,我们直接看一下代码:
上面那段代码应该不难理解,无非就是搞一个Lock对象,然后加锁和释放锁。
你这时可能会