Package org.redisson
Class RedissonMultiLock
-
- org.redisson.RedissonMultiLock
-
- All Implemented Interfaces:
,
RLock
,RLockAsync
- Direct Known Subclasses:
RedissonRedLock
public class RedissonMultiLock extends 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 state>
forceUnlockAsync()
Unlocks the lock independently of its stateint
getHoldCount()
Number of holds on this lock by the current thread>
getHoldCountAsync()
Number of holds on this lock by the current threadgetName()
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 thread>
isLockedAsync()
Checks if the lock locked by any threadvoid
lock()
void
lock(long leaseTime, unit)
Acquires the lock with definedleaseTime
.>
lockAsync()
Acquires the lock.>
lockAsync(long threadId)
Acquires the lock by thread with definedthreadId
.>
lockAsync(long leaseTime, unit)
Acquires the lock with definedleaseTime
.>
lockAsync(long leaseTime, unit, long threadId)
Acquires the lock with definedleaseTime
andthreadId
.void
lockInterruptibly()
void
lockInterruptibly(long leaseTime, unit)
Acquires the lock with definedleaseTime
.newCondition()
long
remainTimeToLive()
Remaining time to live of the lock>
remainTimeToLiveAsync()
Remaining time to live of the lockboolean
tryLock()
boolean
tryLock(long waitTime, long leaseTime, unit)
Tries to acquire the lock with definedleaseTime
.boolean
tryLock(long waitTime, unit)
>
tryLockAsync()
Tries to acquire the lock.>
tryLockAsync(long threadId)
Tries to acquire the lock by thread with specifiedthreadId
.>
tryLockAsync(long waitTime, long leaseTime, unit)
Tries to acquire the lock with definedleaseTime
.>
tryLockAsync(long waitTime, long leaseTime, unit, long threadId)
Tries to acquire the lock by thread with specifiedthreadId
andleaseTime
.protected void
tryLockAsync(long threadId, long leaseTime, unit, long waitTime, > result)
>
tryLockAsync(long waitTime, unit)
Tries to acquire the lock.void
unlock()
>
unlockAsync()
Unlocks the lock>
unlockAsync(long threadId)
Unlocks the lock.protected void
<RLock> locks)
protected >
<RLock> locks, long threadId)
-
-
-
Method Detail
-
lock
public void lock()
- Specified by:
in interface
-
lock
public void lock(long leaseTime, 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 > lockAsync(long leaseTime, 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 > lockAsync(long leaseTime, 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, unit, long waitTime, > result)
-
lockInterruptibly
public void lockInterruptibly() throws
- Specified by:
in interface
- Throws:
-
lockInterruptibly
public void lockInterruptibly(long leaseTime, unit) throws
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:
- - if the thread is interrupted
-
tryLock
public boolean tryLock()
- Specified by:
in interface
-
unlockInner
protected void unlockInner(<RLock> locks)
-
unlockInnerAsync
protected > unlockInnerAsync(<RLock> locks, long threadId)
-
tryLock
public boolean tryLock(long waitTime, unit) throws
- Specified by:
in interface
- Throws:
-
failedLocksLimit
protected int failedLocksLimit()
-
tryLock
public boolean tryLock(long waitTime, long leaseTime, unit) throws
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.
-
tryLockAsync
public > tryLockAsync(long waitTime, long leaseTime, 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 > tryLockAsync(long waitTime, long leaseTime, 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 > unlockAsync(long threadId)
Description copied from interface:RLockAsync
Unlocks the lock. Throws if lock isn't locked by thread with specifiedthreadId
.- Specified by:
unlockAsync
in interfaceRLockAsync
- Parameters:
threadId
- id of thread- Returns:
- void
-
unlock
public void unlock()
- Specified by:
in interface
-
newCondition
public newCondition()
- Specified by:
in interface
-
forceUnlockAsync
public > 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 > unlockAsync()
Description copied from interface:RLockAsync
Unlocks the lock- Specified by:
unlockAsync
in interfaceRLockAsync
- Returns:
- void
-
tryLockAsync
public > tryLockAsync()
Description copied from interface:RLockAsync
Tries to acquire the lock.- Specified by:
tryLockAsync
in interfaceRLockAsync
- Returns:
true
if lock acquired otherwisefalse
-
lockAsync
public > 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 > 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 > 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 > tryLockAsync(long waitTime, 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 > 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
-
getName
public getName()
Description copied from interface:RLock
Returns name of object
-
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 > 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 > 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.
-
-