>ReentrantReadWriteLock通过AQS实现读写分离:读锁共享,写锁排他。它专为“读多写少”场景设计以提升性能,并支持锁降级。本文深入剖析其状态位设计、公平性及实现原理。 我们来深入剖析一下 的工作原理。这部分内容会稍微有点硬核,但理解后会对 Java 并发编程有更深的认识。 (可重入读写锁)是 Java 并包下的一个核心工具,它解决了这种排他锁在“读多写少”场景下性能低下的问题。 1. 核心思想:读写分离与锁降级 的核心思想是读写分离。它内部维护了两个锁:一个读锁 (Read Lock) 和一个写锁 (Write Lock)。这两个锁共享同一个等待队列,并遵循以下规则: 1. 读锁是共享的 (Shared):多个线程可以同时持有读锁。只要没有线程持有写锁,任何线程都可以成功获取读锁。 2. 写锁是排他的 (Exclusive):同一时间只能有一个线程持有写锁。当一个线程持有写锁时,其他任何线程(无论是想获取读锁还是写锁)都必须等待。 3. 互斥关系: 读锁和写锁是互斥的。 写锁和写锁是互斥的。 这个设计极大地提高了在读多写少环境下的并发性能。想象一个缓存系统,绝...