其实大部分的锁都是使用了类似信号量的东西,就是一个变量,这个变量能被其他东西检测到,修改这个变量就是上锁的过程,检测这个变量的值就是查看是否上锁,在ReentrantLock中也是使用一个变量,不过它是借助了AQS,通过实现不同顺序加入等待队列来实现了公平或者非公平锁。真要拿出来分析能水三篇博客,个人感觉JUC的源码都可看看。