April 8, 2023

ReentrantReadWriteLock基础介绍

简介 之前我们主要介绍了ReentrantLock和其相关的Condition的内容。今天我们主要会过一下ReentrantReadWriteLock的代码。现实中,读写锁的使用非常多。如果你也是一个大数据工程师,同时使用过Spark的话,就会知道Spark内部有一个BlockInfoManager的类。在大数据计算中,常用的是基于复制的模式,读多写少的任务非常常见,有读写锁可以有效的减少锁竞争,提高数据查询速率。今天这一节,我们就简单介绍一下ReentrantReadWriteLock和它背后的一点数学知识。 读写锁的3条规定: 允许多个线程同时读共享变量 只允许一个线程写共享变量 如果写线程正在执行写出操作,那么禁止其他线程读写共享变量。 ReentrantReadWriteLock的特殊属性:锁降级:遵循先获取写锁,获取读锁,再释放写锁的次序。写锁可以降级成读锁 ReentrantReadWriteLock的实现的接口是ReadWriteLock: public interface ReadWriteLock { /** * Returns the lock used for reading. * * @return the lock used for reading */ Lock…