Java Spring分布式锁与Redis:每个锁的不同锁超时

a1o7rhls  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(115)

我需要为每个任务的执行创建锁,但是不同的任务可以有不同的锁超时。我在Redis中使用Spring分布式锁,这里有我的示例代码片段:

@Override
public boolean lock(String taskKey) {
    if(taskKey == null || taskKey.isEmpty()){
        throw new IllegalArgumentException("Key must be not null!");
    }
    Lock lock = lockRegistry.obtain(taskKey);

try{
    if(!lock.tryLock()){
        logger.warn("Unable to lock resource {}", taskKey);
        return false;
    }

    logger.debug("Resource {} locked ", taskKey);
    return true;
}catch(Exception exc){
    throw exc;
}

}
我想要的是为每个taskKey设置不同的锁超时。我怎么能做到这一点呢?

mwngjboj

mwngjboj1#

boolean tryLock(long time, TimeUnit unit) throws InterruptedException;

正如您所看到的,方法tryLock可选地接受2个参数。

if(!lock.tryLock(30, SECONDS)){
  logger.warn("Unable to lock resource {}", taskKey);
  return false;
}

相关问题