大纲 1.ReentractReadWriteLock的基本原理 2.基于AQS实现的ReentractReadWriteLock 3.ReentractReadWriteLock如何竞争写锁 4.ReentractReadWriteLock如何竞争读锁 5.ReentractReadWriteLock的公平锁和非公平锁 6.ReentrantReadWriteLock中的锁降级 7.Condition的说明介绍 8.Condition的源码实现 1.ReentractReadWriteLock的基本原理 (1)读锁和写锁关系 表面上读锁和写锁是两把锁,但实际上只是同一把锁的两个视图。读锁和写锁在初始化的时候会共用一个Sync,也就是同一把锁、两类线程。其中读线程和读线程不互斥,读线程和写线程互斥,写线程和写线程互斥。 (2)锁状态设计 和独占锁一样,读写锁也是使用state变量来表示锁的状态。只是将state变量拆成两半:高16位表示读锁状态,低16位表示写锁状态。 读写锁是通过位运算来快速确定读和写的状态的。假设当前state = s,则写状态等于s & ((1 << 16)...