看完了《Java并发编程的艺术》后,感觉对锁这一快好像有了一个大概念的体系了。但是细节上可能还是有些不清楚,这里对读写锁做一个学习的记录
常见的业务场景都是读多写少,对于读写锁来说,其允许多个线程同时进行读操作,单手只能有一个线程进行写操作,且这个写操作不能喝读操作同时进行。写锁的解锁会自己完成其他线程的可见。
如果要在Java5前实现这一功能,只能通过synchronized的等待通知机制。比较起来,读写锁的性能和开发程度会更好。
一般来说,读写锁的性能会比排它锁好,其拥有的特性如下(ReentrantReadWriteLock)
ReentrantReadWriteLock的一些API
使用ReentrantReadWriteLock的用法:
public class Cache {
static Map map = new HashMap();
static ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
static Lock r = rwl.readLock();
static Lock w = rwl.writeLock();
// ឴获取一个key对应的value (读锁的使用)