JUC的AQS学习-ReentrantLock源代码分析
什么是AQS
AQS是JUC里并发控制一个很重要的基础,他提供了一个独占和共享访问控制某个状态的工具,JUC里的锁、信号量、门阀都是基于AQS实现的,单独去看AQS的代码很难理解,而且很难理解其设计之精妙,笔者计划依次分析锁(ReentrantLock)、门阀(CountDownLatch)、信号量(Semaphor)、读写锁(ReadWriteLock)来解析AQS的设计细节。
AQS是JUC里并发控制一个很重要的基础,他提供了一个独占和共享访问控制某个状态的工具,JUC里的锁、信号量、门阀都是基于AQS实现的,单独去看AQS的代码很难理解,而且很难理解其设计之精妙,笔者计划依次分析锁(ReentrantLock)、门阀(CountDownLatch)、信号量(Semaphor)、读写锁(ReadWriteLock)来解析AQS的设计细节。
在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段。 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但是这些库实现的方式差别很大,而且很多简单的实现其实只需采用稍微增加一点复杂的设计就可以获得更好的可靠性。 这篇文章的目的就是尝试提出一种官方权威的用Redis实现分布式锁管理器的算法,我们把这个算法称为RedLock,我们相信这个算法会比一般的普通方法更加安全可靠。我们也希望社区能一起分析这个算法,提供一些反馈,然后我们以此为基础,来设计出更加复杂可靠的算法,或者更好的新算法。