读写锁 ReentrantReadWriteLock 与 互斥锁 的效率

ReentrantReadWriteLock

一种支持一写多读的同步锁,读写分离,可分别分配读锁、写锁

支持多次分配读锁,使多个读操作可以并发执行

读写锁 ReentrantReadWriteLock 与 互斥锁 的效率

互斥规则

写 - 写:互斥,阻塞

读 - 写:互斥,读阻塞写、写阻塞读

读 - 读:不互斥,不阻塞

在读操作远远高于写操作的环境中,可在保证线程安全的情况下,提高运行效率

 

我们可以写一个例子,就是读的操作多,写的操作少,我们可以比较一下,使用读写锁和互斥锁的运行的效率

读写锁的代码

读写锁 ReentrantReadWriteLock 与 互斥锁 的效率

测试代码:

读写锁 ReentrantReadWriteLock 与 互斥锁 的效率

运行结果

读写锁 ReentrantReadWriteLock 与 互斥锁 的效率

 

测试互斥锁的代码:其实就是修改了锁为lock,其他都没有改变

读写锁 ReentrantReadWriteLock 与 互斥锁 的效率

 

测试结果:

读写锁 ReentrantReadWriteLock 与 互斥锁 的效率

 

可以发现 读写锁 对效率的提升有很大的帮助