Java 读写锁 ReadWriteLock 原理与应用场景详解( 三 )


 
4.锁降级
降级是指当前把持住写锁,再获取到读锁,随后释放(先前拥有的)写锁的过程 。
锁降级过程中的读锁的获取是否有必要,答案是必要的 。主要是为了保证数据的可见性,如果当前线程不获取读锁而直接释放写锁,假设此刻另一个线程获取的写锁,并修改了数据,那么当前线程就步伐感知到线程T的数据更新,如果当前线程遵循锁降级的步骤,那么线程T将会被阻塞,直到当前线程使数据并释放读锁之后,线程T才能获取写锁进行数据更新 。
 
5.读锁与写锁的整体流程

Java 读写锁 ReadWriteLock 原理与应用场景详解

文章插图
读写锁总结本篇详细介绍了ReentrantReadWriteLock的特征、实现、锁的获取过程,通过4个关键点的核心设计:
  • 读写状态的设计
  • 写锁的获取与释放
  • 读锁的获取与释放
  • 锁降级
从而才能实现:共享资源有读和写的操作,且写操作没有读操作那么频繁的应用场景 。
作者简介陈睿|mikechen,10年+大厂架构经验,《BAT架构技术500期》系列文章作者,专注于互联网架构技术 。
阅读mikechen的互联网架构更多技术文章合集
Java并发|JVM|MySQL|Spring|Redis|分布式|高并发
【Java 读写锁 ReadWriteLock 原理与应用场景详解】

经验总结扩展阅读