老师你好,关于ReentrantReadWriteLock的问题

来源:5-8 并发容器及安全共享策略总结

qq_湿腻焦糊_0

2018-08-27

我看《Java并发编程实战》,里面介绍ReentrantReadWriteLock,读锁和写锁,里面说读锁类似于Semaphore而不是锁,只是维护当前活跃的读线程的数量,我知道读锁是共享锁而写锁是排它锁,那我的理解是共享锁不是一种真正的锁,那他又有什么意义呢?

写回答

1回答

Jimin

2018-08-27

你好,他存在的意义可以参考ReentrantLock,ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,显然这个特点在一定程度上面减低了吞吐量。

实际应用场景中我们会经常遇到这样的情况:某些资源需要并发访问,并且大部分时间是用来进行读操作的,写操作比较少,而锁是有一定的开销的,当并发比较大的时候,锁的开销就非常可观了。所以如果可能的话就尽量少用锁,如果非要用锁的话就尝试看能否能实现读写分离,将其改造为读写锁。

ReentrantReadWriteLock主要就是为了解决这种场景,尽可能的减少排他锁的使用,同时也能保证足够的线程安全。

0
3
qq_湿腻焦糊_0
非常感谢!
2018-08-28
共3条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程