读写锁及锁降级

本文介绍了读写锁的概念及其在Java中的实现,详细讲解了ReentrantReadWriteLock的工作原理,包括读锁和写锁的获取与释放。通过一个锁降级的示例,解释了为何在某些场景下需要进行锁降级以保证数据一致性。
摘要由CSDN通过智能技术生成

看完了《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 (读锁的使用)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值