redisson 分布式锁和同步(一)锁

1.1基于Redis的分布式可重入锁定Java对象及其实现

java.util.concurrent.locks.Lock interface

RLocklock=redisson.getLock("anyLock");

lock.lock();

如果Redisson实例获得了锁崩溃,那么这种锁就可能永远挂在已获得的状态中。为了避免这个Redisson维护锁看门狗,它延长锁过期,而锁持有人Redisson实例是活着的。默认情况下,锁看门狗超时为30秒,可以通过Config.lockWatchdogTimeout设置进行更改。

lock.lock(10,TimeUnit.SECONDS);

//Wait for 100 seconds and automatically unlock it after 10 seconds

booleanres=lock.tryLock(100,10,TimeUnit.SECONDS);

if(res) {

try{...}

finally{

 lock.unlock(); 

 }

}

REDISSON还提供了用于锁定对象的异步方法:

RLocklock=redisson.getLock("anyLock");

lock.lockAsync();

lock.lockAsync(10,TimeUnit.SECONDS);

Futureres=lock.tryLockAsync(100,10,TimeUnit.SECONDS);

Rock对象按照java Lock规范运行。这意味着只有锁所有者线程才能解锁,否则将引发IllegalMonitorStateException。但是,如果您仍然需要这样的场景,请使用RSem标对象。

你可能感兴趣的:(redisson 分布式锁和同步(一)锁)