ReentrantLock和synchronzied都是互斥锁,即在某一时刻最多只能有一个线程持有锁。互斥锁在保证线程安全的同时,在一定程度上降低了吞吐量,因为这种情况下任何的“读/读”、“读/写”、“写/写”操作都不能同时发生。然而在实际的场景中我们就会遇到这种情况:有些资源并发的访问中,它大部分时间都是执行读操作,写操作比较少,但是读操作并不影响数据的一致性,如果在进行读操作时采用独占的锁机制,这样势必会大大降低吞吐量。所以如果能够做到读写分离,那就非常完美了。

参考资料

https://blog.csdn.net/chenssy/article/details/49532113

https://blog.csdn.net/hanchao5272/article/details/79683202

https://www.cnblogs.com/haimishasha/p/11198419.html#autoid-3-0-0