ReadWirteLock的作用和说明
ReadWriteLock是锁的一种,他适合哪种读多写少的场景,做有名的就是缓存场景。因为他们的读锁是不互斥的,但是读锁和写锁、写锁之间是互斥的。具体使用方法如下:
1 | class Cache<K,V> { |
进一步的实现懒加载
1 | class Cache<K,V> { |
读写锁的升级和降级
注意,读写锁是不支持锁的升级的即,在读锁中升级到写锁,因为读锁和写锁互斥,因为读锁升级到写锁的时候,读写锁互斥、写锁需要等待读锁释放,而读锁被写锁阻塞住会造成死锁,但是反过来写锁降级是可以的
1 | class CachedData { |