Redisson锁学习

1、可重入锁

public void reentrantLockTest(){
     RLock rLock = redisson.getLock("reentrantLock");
try {
     boolean tryLock = rLock.tryLock(10,TimeUnit.SECONDS);
     if(tryLock){
	//doSomething
        }
     } catch (Exception e) {
    e.printStackTrace();
   }finally{
	 rLock.unlock();
  }
2、公平锁
  public void fairLockTest(){
    RLock fairLock =  redisson.getFairLock("fairLock");
    try {
          fairLock.tryLock(5, 10, TimeUnit.SECONDS);
	  //doSomething
     } catch (InterruptedException e) {
          e.printStackTrace();
       }finally{
           fairLock.unlock();
        }
    }

3、联锁

public void multiLockTest(){
    RLock lock1 = redisson1.getLock("lock1");
    RLock lock2 = redisson2.getLock("lock2");
    RLock lock3 = redisson3.getLock("lock3");
    RedissonMultiLock lock = new RedissonMultiLock(lock1, lock2, lock3);
    try {
         lock.tryLock(5, TimeUnit.SECONDS);
           //doSomething
          } catch (InterruptedException e) {
            e.printStackTrace();
         }finally{
           lock.unlock();
          }
   }

4、红锁

public void redLockTest(){
    	RLock lock1 = redisson1.getLock("lock1");
    	RLock lock2 = redisson2.getLock("lock2");
    	RLock lock3 = redisson3.getLock("lock3");
    	RedissonRedLock lock = new RedissonRedLock(lock1, lock2, lock3);
    	try {
	lock.tryLock(5, TimeUnit.SECONDS);
		//doSomething
	} catch (InterruptedException e) {
			e.printStackTrace();
	}finally{
		lock.unlock();
	}
    }

5、读写锁

 public void readwriteLockTest(){
    	RReadWriteLock lock = redisson.getReadWriteLock("readwriteLockTest");
    	lock.readLock().lock(10, TimeUnit.SECONDS);//10秒后自动解锁
    	//doSomething
    	//lock.writeLock().lock(5, TimeUnit.SECONDS);
    }

6、Redisson防重

    //检查分布式对象是否存在
    public Boolean  existSet(String name){
    	RLock lock = redisson.getLock("testExistAndLock");
    	try {
			boolean tryLock = lock.tryLock(10,TimeUnit.SECONDS);
			if(tryLock){
				RSet<Object> rSet = redisson.getSet(name);
				if(rSet.isExists()){
					return true;
				}				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			lock.unlock();
		}
		return false;
    }


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值