java读写锁ReadWriteLock的使用

  1. ReentrantReadWriteLock 可重入的读写锁
    //可以同时读,读写排斥 写写排斥
    ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();
    ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock();
    ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLock.writeLock();
    //读锁
    public void readTest() {
        readLock.lock();
        try {
            System.out.println("读取受保护的资源");
        } finally {
            readLock.unlock();
        }
    }
    //写锁
    public void writeTest() {
        writeLock.lock();
        try {
            System.out.println("修改受保护的资源");
        } finally {
            writeLock.unlock();
        }
    }
  1. ReentrantReadWriteLock 锁的特点
    // fair公平状态,默认为不公平锁(false),效率更高;
    // 公平锁(true)等待时间最长的写锁或者一组读锁会优先获得锁,不过tryLock不遵守公平规则。
   boolean fair=true;
   ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(fair);
  • 可重入性:写锁可以继续重入获得写锁和读锁;但是读锁不能获得写锁,只能重入读锁。
  • 锁降级:写锁可以降级为读锁
  • 先获取写锁,重入(获得)读锁,先释放写锁(此时读锁未释放,降级为了读锁),再释放读锁
  • 锁的个数:最多65535个
  • 应用场景:读多写少,读竞争激烈,写竞争比较少
  1. 使用锁时异常情况处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值