ReentrantReadWriteLock详解及应用:缓存和大量数据并发访问

1. 创建,两种fair和unfair
     unfair:read和write锁获取依赖于Reentrancy规则,不存在先后顺序
     fair:各个线程按照时间顺序进行锁的获取,当一个线程试图获取read锁时,如果当前没有线程获取write锁且试图获取write的线程请求时间没有请求read锁的时间久,则获取read锁。当一个线程试图获取write锁时,当且仅当当前所有的read锁和write锁全部释放才能成功(ReadLoac.tryLock()和WriteLock.tryLock()不受该约束)
2. ReentrantReadWriteLock提供了两个锁,readLock和writeLock,readLock可多线程并发执行,writeLock只能单线程执行(类似于synchronized),线程获取writeLock锁之后可以继续获取readLock,反过来不行,后面相关说明
3. 降级:writeLock变成readLock成为锁降级,具体操作为writeLock.lock->readLock.lock->writeLock.unlock
这样就把writeLock变成了readLock
4. 两种锁再获取锁期间都支持interruption
5. 只有writeLock支持condition,通过writeLock.newCondition获得condition对象,对weiteLock进行await和signal、signalAll控制,因为readLock本身支持多线程迸发访问,所以condition控制对readLock没什么用
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值