Package org.redisson
Class RedissonMultiLock
- java.lang.Object
-
- org.redisson.RedissonMultiLock
-
- All Implemented Interfaces:
Lock,RLock,RLockAsync
- Direct Known Subclasses:
RedissonRedLock
public class RedissonMultiLock extends Object implements RLock
Groups multiple independent locks and manages them as one lock.- Author:
- Nikita Koksharov
-
-
Constructor Summary
Constructors Constructor Description RedissonMultiLock(RLock... locks)Creates instance with multipleRLockobjects.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected longcalcLockWaitTime(long remainTime)protected intfailedLocksLimit()booleanforceUnlock()Unlocks the lock independently of its stateRFuture<Boolean>forceUnlockAsync()Unlocks the lock independently of its stateintgetHoldCount()Number of holds on this lock by the current threadRFuture<Integer>getHoldCountAsync()Number of holds on this lock by the current threadStringgetName()Returns name of objectbooleanisHeldByCurrentThread()Checks if this lock is held by the current threadbooleanisHeldByThread(long threadId)Checks if the lock is held by thread with definedthreadIdbooleanisLocked()Checks if the lock locked by any threadRFuture<Boolean>isLockedAsync()Checks if the lock locked by any threadvoidlock()voidlock(long leaseTime, TimeUnit unit)Acquires the lock with definedleaseTime.RFuture<Void>lockAsync()Acquires the lock.RFuture<Void>lockAsync(long threadId)Acquires the lock by thread with definedthreadId.RFuture<Void>lockAsync(long leaseTime, TimeUnit unit)Acquires the lock with definedleaseTime.RFuture<Void>lockAsync(long leaseTime, TimeUnit unit, long threadId)Acquires the lock with definedleaseTimeandthreadId.voidlockInterruptibly()voidlockInterruptibly(long leaseTime, TimeUnit unit)Acquires the lock with definedleaseTime.ConditionnewCondition()longremainTimeToLive()Remaining time to live of the lockRFuture<Long>remainTimeToLiveAsync()Remaining time to live of the lockbooleantryLock()booleantryLock(long waitTime, long leaseTime, TimeUnit unit)Tries to acquire the lock with definedleaseTime.booleantryLock(long waitTime, TimeUnit unit)RFuture<Boolean>tryLockAsync()Tries to acquire the lock.RFuture<Boolean>tryLockAsync(long threadId)Tries to acquire the lock by thread with specifiedthreadId.RFuture<Boolean>tryLockAsync(long waitTime, long leaseTime, TimeUnit unit)Tries to acquire the lock with definedleaseTime.RFuture<Boolean>tryLockAsync(long waitTime, long leaseTime, TimeUnit unit, long threadId)Tries to acquire the lock by thread with specifiedthreadIdandleaseTime.protected voidtryLockAsync(long threadId, long leaseTime, TimeUnit unit, long waitTime, RPromise<Void> result)RFuture<Boolean>tryLockAsync(long waitTime, TimeUnit unit)Tries to acquire the lock.voidunlock()RFuture<Void>unlockAsync()Unlocks the lockRFuture<Void>unlockAsync(long threadId)Unlocks the lock.protected voidunlockInner(Collection<RLock> locks)protected RFuture<Void>unlockInnerAsync(Collection<RLock> locks, long threadId)
-
-
-
Method Detail
-
lock
public void lock(long leaseTime, TimeUnit unit)Description copied from interface:RLockAcquires the lock with definedleaseTime. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTimeinterval.
-
lockAsync
public RFuture<Void> lockAsync(long leaseTime, TimeUnit unit)
Description copied from interface:RLockAsyncAcquires the lock with definedleaseTime. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTimeinterval.- Specified by:
lockAsyncin interfaceRLockAsync- Parameters:
leaseTime- the maximum time to hold the lock after it's acquisition, if it hasn't already been released by invokingunlock. If leaseTime is -1, hold the lock until explicitly unlocked.unit- the time unit- Returns:
- void
-
lockAsync
public RFuture<Void> lockAsync(long leaseTime, TimeUnit unit, long threadId)
Description copied from interface:RLockAsyncAcquires the lock with definedleaseTimeandthreadId. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTimeinterval.- Specified by:
lockAsyncin interfaceRLockAsync- Parameters:
leaseTime- the maximum time to hold the lock after it's acquisition, if it hasn't already been released by invokingunlock. If leaseTime is -1, hold the lock until explicitly unlocked.unit- the time unitthreadId- id of thread- Returns:
- void
-
tryLockAsync
protected void tryLockAsync(long threadId, long leaseTime, TimeUnit unit, long waitTime, RPromise<Void> result)
-
lockInterruptibly
public void lockInterruptibly() throws InterruptedException- Specified by:
lockInterruptiblyin interfaceLock- Throws:
InterruptedException
-
lockInterruptibly
public void lockInterruptibly(long leaseTime, TimeUnit unit) throws InterruptedExceptionDescription copied from interface:RLockAcquires the lock with definedleaseTime. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTimeinterval.- Specified by:
lockInterruptiblyin interfaceRLock- Parameters:
leaseTime- the maximum time to hold the lock after it's acquisition, if it hasn't already been released by invokingunlock. If leaseTime is -1, hold the lock until explicitly unlocked.unit- the time unit- Throws:
InterruptedException- - if the thread is interrupted
-
unlockInner
protected void unlockInner(Collection<RLock> locks)
-
unlockInnerAsync
protected RFuture<Void> unlockInnerAsync(Collection<RLock> locks, long threadId)
-
tryLock
public boolean tryLock(long waitTime, TimeUnit unit) throws InterruptedException- Specified by:
tryLockin interfaceLock- Throws:
InterruptedException
-
failedLocksLimit
protected int failedLocksLimit()
-
tryLock
public boolean tryLock(long waitTime, long leaseTime, TimeUnit unit) throws InterruptedExceptionDescription copied from interface:RLockTries to acquire the lock with definedleaseTime. Waits up to definedwaitTimeif necessary until the lock became available. Lock will be released automatically after definedleaseTimeinterval.- Specified by:
tryLockin interfaceRLock- Parameters:
waitTime- the maximum time to acquire the lockleaseTime- lease timeunit- time unit- Returns:
trueif lock is successfully acquired, otherwisefalseif lock is already set.- Throws:
InterruptedException- - if the thread is interrupted
-
tryLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, long leaseTime, TimeUnit unit, long threadId)
Description copied from interface:RLockAsyncTries to acquire the lock by thread with specifiedthreadIdandleaseTime. Waits up to definedwaitTimeif necessary until the lock became available. Lock will be released automatically after definedleaseTimeinterval.- Specified by:
tryLockAsyncin interfaceRLockAsync- Parameters:
waitTime- time interval to acquire lockleaseTime- time interval after which lock will be released automaticallyunit- the time unit of thewaitTimeandleaseTimeargumentsthreadId- id of thread- Returns:
trueif lock acquired otherwisefalse
-
tryLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, long leaseTime, TimeUnit unit)
Description copied from interface:RLockAsyncTries to acquire the lock with definedleaseTime. Waits up to definedwaitTimeif necessary until the lock became available. Lock will be released automatically after definedleaseTimeinterval.- Specified by:
tryLockAsyncin interfaceRLockAsync- Parameters:
waitTime- the maximum time to acquire the lockleaseTime- lease timeunit- time unit- Returns:
trueif lock is successfully acquired, otherwisefalseif lock is already set.
-
calcLockWaitTime
protected long calcLockWaitTime(long remainTime)
-
unlockAsync
public RFuture<Void> unlockAsync(long threadId)
Description copied from interface:RLockAsyncUnlocks the lock. ThrowsIllegalMonitorStateExceptionif lock isn't locked by thread with specifiedthreadId.- Specified by:
unlockAsyncin interfaceRLockAsync- Parameters:
threadId- id of thread- Returns:
- void
-
newCondition
public Condition newCondition()
- Specified by:
newConditionin interfaceLock
-
forceUnlockAsync
public RFuture<Boolean> forceUnlockAsync()
Description copied from interface:RLockAsyncUnlocks the lock independently of its state- Specified by:
forceUnlockAsyncin interfaceRLockAsync- Returns:
trueif lock existed and now unlocked otherwisefalse
-
unlockAsync
public RFuture<Void> unlockAsync()
Description copied from interface:RLockAsyncUnlocks the lock- Specified by:
unlockAsyncin interfaceRLockAsync- Returns:
- void
-
tryLockAsync
public RFuture<Boolean> tryLockAsync()
Description copied from interface:RLockAsyncTries to acquire the lock.- Specified by:
tryLockAsyncin interfaceRLockAsync- Returns:
trueif lock acquired otherwisefalse
-
lockAsync
public RFuture<Void> lockAsync()
Description copied from interface:RLockAsyncAcquires the lock. Waits if necessary until lock became available.- Specified by:
lockAsyncin interfaceRLockAsync- Returns:
- void
-
lockAsync
public RFuture<Void> lockAsync(long threadId)
Description copied from interface:RLockAsyncAcquires the lock by thread with definedthreadId. Waits if necessary until lock became available.- Specified by:
lockAsyncin interfaceRLockAsync- Parameters:
threadId- id of thread- Returns:
- void
-
tryLockAsync
public RFuture<Boolean> tryLockAsync(long threadId)
Description copied from interface:RLockAsyncTries to acquire the lock by thread with specifiedthreadId.- Specified by:
tryLockAsyncin interfaceRLockAsync- Parameters:
threadId- id of thread- Returns:
trueif lock acquired otherwisefalse
-
tryLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, TimeUnit unit)
Description copied from interface:RLockAsyncTries to acquire the lock. Waits up to definedwaitTimeif necessary until the lock became available.- Specified by:
tryLockAsyncin interfaceRLockAsync- Parameters:
waitTime- the maximum time to acquire the lockunit- time unit- Returns:
trueif lock is successfully acquired, otherwisefalseif lock is already set.
-
getHoldCountAsync
public RFuture<Integer> getHoldCountAsync()
Description copied from interface:RLockAsyncNumber of holds on this lock by the current thread- Specified by:
getHoldCountAsyncin interfaceRLockAsync- Returns:
- holds or
0if this lock is not held by current thread
-
forceUnlock
public boolean forceUnlock()
Description copied from interface:RLockUnlocks the lock independently of its state- Specified by:
forceUnlockin interfaceRLock- Returns:
trueif lock existed and now unlocked otherwisefalse
-
isLocked
public boolean isLocked()
Description copied from interface:RLockChecks if the lock locked by any thread
-
isLockedAsync
public RFuture<Boolean> isLockedAsync()
Description copied from interface:RLockAsyncChecks if the lock locked by any thread- Specified by:
isLockedAsyncin interfaceRLockAsync- Returns:
trueif locked otherwisefalse
-
isHeldByThread
public boolean isHeldByThread(long threadId)
Description copied from interface:RLockChecks if the lock is held by thread with definedthreadId- Specified by:
isHeldByThreadin interfaceRLock- Parameters:
threadId- Thread ID of locking thread- Returns:
trueif held by thread with given id otherwisefalse
-
isHeldByCurrentThread
public boolean isHeldByCurrentThread()
Description copied from interface:RLockChecks if this lock is held by the current thread- Specified by:
isHeldByCurrentThreadin interfaceRLock- Returns:
trueif held by current thread otherwisefalse
-
getHoldCount
public int getHoldCount()
Description copied from interface:RLockNumber of holds on this lock by the current thread- Specified by:
getHoldCountin interfaceRLock- Returns:
- holds or
0if this lock is not held by current thread
-
remainTimeToLiveAsync
public RFuture<Long> remainTimeToLiveAsync()
Description copied from interface:RLockAsyncRemaining time to live of the lock- Specified by:
remainTimeToLiveAsyncin interfaceRLockAsync- Returns:
- time in milliseconds -2 if the lock does not exist. -1 if the lock exists but has no associated expire.
-
remainTimeToLive
public long remainTimeToLive()
Description copied from interface:RLockRemaining time to live of the lock- Specified by:
remainTimeToLivein interfaceRLock- Returns:
- time in milliseconds -2 if the lock does not exist. -1 if the lock exists but has no associated expire.
-
-