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 multipleRLock
objects.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected long
calcLockWaitTime(long remainTime)
protected int
failedLocksLimit()
boolean
forceUnlock()
Unlocks the lock independently of its stateRFuture<Boolean>
forceUnlockAsync()
Unlocks the lock independently of its stateint
getHoldCount()
Number of holds on this lock by the current threadRFuture<Integer>
getHoldCountAsync()
Number of holds on this lock by the current threadString
getName()
Returns name of objectboolean
isHeldByCurrentThread()
Checks if this lock is held by the current threadboolean
isHeldByThread(long threadId)
Checks if the lock is held by thread with definedthreadId
boolean
isLocked()
Checks if the lock locked by any threadRFuture<Boolean>
isLockedAsync()
Checks if the lock locked by any threadvoid
lock()
void
lock(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 definedleaseTime
andthreadId
.void
lockInterruptibly()
void
lockInterruptibly(long leaseTime, TimeUnit unit)
Acquires the lock with definedleaseTime
.Condition
newCondition()
long
remainTimeToLive()
Remaining time to live of the lockRFuture<Long>
remainTimeToLiveAsync()
Remaining time to live of the lockboolean
tryLock()
boolean
tryLock(long waitTime, long leaseTime, TimeUnit unit)
Tries to acquire the lock with definedleaseTime
.boolean
tryLock(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 specifiedthreadId
andleaseTime
.protected void
tryLockAsync(long threadId, long leaseTime, TimeUnit unit, long waitTime, RPromise<Void> result)
RFuture<Boolean>
tryLockAsync(long waitTime, TimeUnit unit)
Tries to acquire the lock.void
unlock()
RFuture<Void>
unlockAsync()
Unlocks the lockRFuture<Void>
unlockAsync(long threadId)
Unlocks the lock.protected void
unlockInner(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:RLock
Acquires the lock with definedleaseTime
. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTime
interval.
-
lockAsync
public RFuture<Void> lockAsync(long leaseTime, TimeUnit unit)
Description copied from interface:RLockAsync
Acquires the lock with definedleaseTime
. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTime
interval.- Specified by:
lockAsync
in 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:RLockAsync
Acquires the lock with definedleaseTime
andthreadId
. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTime
interval.- Specified by:
lockAsync
in 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:
lockInterruptibly
in interfaceLock
- Throws:
InterruptedException
-
lockInterruptibly
public void lockInterruptibly(long leaseTime, TimeUnit unit) throws InterruptedException
Description copied from interface:RLock
Acquires the lock with definedleaseTime
. Waits if necessary until lock became available. Lock will be released automatically after definedleaseTime
interval.- Specified by:
lockInterruptibly
in 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:
tryLock
in interfaceLock
- Throws:
InterruptedException
-
failedLocksLimit
protected int failedLocksLimit()
-
tryLock
public boolean tryLock(long waitTime, long leaseTime, TimeUnit unit) throws InterruptedException
Description copied from interface:RLock
Tries to acquire the lock with definedleaseTime
. Waits up to definedwaitTime
if necessary until the lock became available. Lock will be released automatically after definedleaseTime
interval.- Specified by:
tryLock
in interfaceRLock
- Parameters:
waitTime
- the maximum time to acquire the lockleaseTime
- lease timeunit
- time unit- Returns:
true
if lock is successfully acquired, otherwisefalse
if 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:RLockAsync
Tries to acquire the lock by thread with specifiedthreadId
andleaseTime
. Waits up to definedwaitTime
if necessary until the lock became available. Lock will be released automatically after definedleaseTime
interval.- Specified by:
tryLockAsync
in interfaceRLockAsync
- Parameters:
waitTime
- time interval to acquire lockleaseTime
- time interval after which lock will be released automaticallyunit
- the time unit of thewaitTime
andleaseTime
argumentsthreadId
- id of thread- Returns:
true
if lock acquired otherwisefalse
-
tryLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, long leaseTime, TimeUnit unit)
Description copied from interface:RLockAsync
Tries to acquire the lock with definedleaseTime
. Waits up to definedwaitTime
if necessary until the lock became available. Lock will be released automatically after definedleaseTime
interval.- Specified by:
tryLockAsync
in interfaceRLockAsync
- Parameters:
waitTime
- the maximum time to acquire the lockleaseTime
- lease timeunit
- time unit- Returns:
true
if lock is successfully acquired, otherwisefalse
if lock is already set.
-
calcLockWaitTime
protected long calcLockWaitTime(long remainTime)
-
unlockAsync
public RFuture<Void> unlockAsync(long threadId)
Description copied from interface:RLockAsync
Unlocks the lock. ThrowsIllegalMonitorStateException
if lock isn't locked by thread with specifiedthreadId
.- Specified by:
unlockAsync
in interfaceRLockAsync
- Parameters:
threadId
- id of thread- Returns:
- void
-
newCondition
public Condition newCondition()
- Specified by:
newCondition
in interfaceLock
-
forceUnlockAsync
public RFuture<Boolean> forceUnlockAsync()
Description copied from interface:RLockAsync
Unlocks the lock independently of its state- Specified by:
forceUnlockAsync
in interfaceRLockAsync
- Returns:
true
if lock existed and now unlocked otherwisefalse
-
unlockAsync
public RFuture<Void> unlockAsync()
Description copied from interface:RLockAsync
Unlocks the lock- Specified by:
unlockAsync
in interfaceRLockAsync
- Returns:
- void
-
tryLockAsync
public RFuture<Boolean> tryLockAsync()
Description copied from interface:RLockAsync
Tries to acquire the lock.- Specified by:
tryLockAsync
in interfaceRLockAsync
- Returns:
true
if lock acquired otherwisefalse
-
lockAsync
public RFuture<Void> lockAsync()
Description copied from interface:RLockAsync
Acquires the lock. Waits if necessary until lock became available.- Specified by:
lockAsync
in interfaceRLockAsync
- Returns:
- void
-
lockAsync
public RFuture<Void> lockAsync(long threadId)
Description copied from interface:RLockAsync
Acquires the lock by thread with definedthreadId
. Waits if necessary until lock became available.- Specified by:
lockAsync
in interfaceRLockAsync
- Parameters:
threadId
- id of thread- Returns:
- void
-
tryLockAsync
public RFuture<Boolean> tryLockAsync(long threadId)
Description copied from interface:RLockAsync
Tries to acquire the lock by thread with specifiedthreadId
.- Specified by:
tryLockAsync
in interfaceRLockAsync
- Parameters:
threadId
- id of thread- Returns:
true
if lock acquired otherwisefalse
-
tryLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, TimeUnit unit)
Description copied from interface:RLockAsync
Tries to acquire the lock. Waits up to definedwaitTime
if necessary until the lock became available.- Specified by:
tryLockAsync
in interfaceRLockAsync
- Parameters:
waitTime
- the maximum time to acquire the lockunit
- time unit- Returns:
true
if lock is successfully acquired, otherwisefalse
if lock is already set.
-
getHoldCountAsync
public RFuture<Integer> getHoldCountAsync()
Description copied from interface:RLockAsync
Number of holds on this lock by the current thread- Specified by:
getHoldCountAsync
in interfaceRLockAsync
- Returns:
- holds or
0
if this lock is not held by current thread
-
forceUnlock
public boolean forceUnlock()
Description copied from interface:RLock
Unlocks the lock independently of its state- Specified by:
forceUnlock
in interfaceRLock
- Returns:
true
if lock existed and now unlocked otherwisefalse
-
isLocked
public boolean isLocked()
Description copied from interface:RLock
Checks if the lock locked by any thread
-
isLockedAsync
public RFuture<Boolean> isLockedAsync()
Description copied from interface:RLockAsync
Checks if the lock locked by any thread- Specified by:
isLockedAsync
in interfaceRLockAsync
- Returns:
true
if locked otherwisefalse
-
isHeldByThread
public boolean isHeldByThread(long threadId)
Description copied from interface:RLock
Checks if the lock is held by thread with definedthreadId
- Specified by:
isHeldByThread
in interfaceRLock
- Parameters:
threadId
- Thread ID of locking thread- Returns:
true
if held by thread with given id otherwisefalse
-
isHeldByCurrentThread
public boolean isHeldByCurrentThread()
Description copied from interface:RLock
Checks if this lock is held by the current thread- Specified by:
isHeldByCurrentThread
in interfaceRLock
- Returns:
true
if held by current thread otherwisefalse
-
getHoldCount
public int getHoldCount()
Description copied from interface:RLock
Number of holds on this lock by the current thread- Specified by:
getHoldCount
in interfaceRLock
- Returns:
- holds or
0
if this lock is not held by current thread
-
remainTimeToLiveAsync
public RFuture<Long> remainTimeToLiveAsync()
Description copied from interface:RLockAsync
Remaining time to live of the lock- Specified by:
remainTimeToLiveAsync
in 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:RLock
Remaining time to live of the lock- Specified by:
remainTimeToLive
in interfaceRLock
- Returns:
- time in milliseconds -2 if the lock does not exist. -1 if the lock exists but has no associated expire.
-
-