package com.qianwen.core.redis.lock; import java.util.concurrent.TimeUnit; import com.qianwen.core.tool.function.CheckedSupplier; /* loaded from: blade-starter-redis-9.3.0.0-SNAPSHOT.jar:org/springblade/core/redis/lock/RedisLockClient.class */ public interface RedisLockClient { boolean tryLock(String lockName, LockType lockType, long waitTime, long leaseTime, TimeUnit timeUnit) throws InterruptedException; void unLock(String lockName, LockType lockType); T lock(String lockName, LockType lockType, long waitTime, long leaseTime, TimeUnit timeUnit, CheckedSupplier supplier); default T lockFair(String lockName, long waitTime, long leaseTime, CheckedSupplier supplier) { return (T) lock(lockName, LockType.FAIR, waitTime, leaseTime, TimeUnit.SECONDS, supplier); } default T lockReentrant(String lockName, long waitTime, long leaseTime, CheckedSupplier supplier) { return (T) lock(lockName, LockType.REENTRANT, waitTime, leaseTime, TimeUnit.SECONDS, supplier); } }