Package org.redisson

Class 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 multiple RLock 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 state
      int getHoldCount()
      Number of holds on this lock by the current thread
      > getHoldCountAsync()
      Number of holds on this lock by the current thread
      getName()
      Returns name of object
      boolean isHeldByCurrentThread()
      Checks if this lock is held by the current thread
      boolean isHeldByThread​(long threadId)
      Checks if the lock is held by thread with defined threadId
      boolean isLocked()
      Checks if the lock locked by any thread
      > isLockedAsync()
      Checks if the lock locked by any thread
      void lock()  
      void lock​(long leaseTime,  unit)
      Acquires the lock with defined leaseTime.
      > lockAsync()
      Acquires the lock.
      > lockAsync​(long threadId)
      Acquires the lock by thread with defined threadId.
      > lockAsync​(long leaseTime,  unit)
      Acquires the lock with defined leaseTime.
      > lockAsync​(long leaseTime,  unit, long threadId)
      Acquires the lock with defined leaseTime and threadId.
      void lockInterruptibly()  
      void lockInterruptibly​(long leaseTime,  unit)
      Acquires the lock with defined leaseTime.
      newCondition()  
      long remainTimeToLive()
      Remaining time to live of the lock
      > remainTimeToLiveAsync()
      Remaining time to live of the lock
      boolean tryLock()  
      boolean tryLock​(long waitTime, long leaseTime,  unit)
      Tries to acquire the lock with defined leaseTime.
      boolean tryLock​(long waitTime,  unit)  
      > tryLockAsync()
      Tries to acquire the lock.
      > tryLockAsync​(long threadId)
      Tries to acquire the lock by thread with specified threadId.
      > tryLockAsync​(long waitTime, long leaseTime,  unit)
      Tries to acquire the lock with defined leaseTime.
      > tryLockAsync​(long waitTime, long leaseTime,  unit, long threadId)
      Tries to acquire the lock by thread with specified threadId and leaseTime.
      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)  
      • Methods inherited from class java.lang.

        , , , , , , , , , ,
    • Constructor Detail

      • RedissonMultiLock

        public RedissonMultiLock​(RLock... locks)
        Creates instance with multiple RLock objects. Each RLock object could be created by own Redisson instance.
        Parameters:
        locks - - array of locks
    • 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 defined leaseTime. Waits if necessary until lock became available. Lock will be released automatically after defined leaseTime interval.
        Specified by:
        lock in interface RLock
        Parameters:
        leaseTime - the maximum time to hold the lock after it's acquisition, if it hasn't already been released by invoking unlock. If leaseTime is -1, hold the lock until explicitly unlocked.
        unit - the time unit
      • lockAsync

        public > lockAsync​(long leaseTime,
                                        unit)
        Description copied from interface: RLockAsync
        Acquires the lock with defined leaseTime. Waits if necessary until lock became available. Lock will be released automatically after defined leaseTime interval.
        Specified by:
        lockAsync in interface RLockAsync
        Parameters:
        leaseTime - the maximum time to hold the lock after it's acquisition, if it hasn't already been released by invoking unlock. 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 defined leaseTime and threadId. Waits if necessary until lock became available. Lock will be released automatically after defined leaseTime interval.
        Specified by:
        lockAsync in interface RLockAsync
        Parameters:
        leaseTime - the maximum time to hold the lock after it's acquisition, if it hasn't already been released by invoking unlock. If leaseTime is -1, hold the lock until explicitly unlocked.
        unit - the time unit
        threadId - 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 defined leaseTime. Waits if necessary until lock became available. Lock will be released automatically after defined leaseTime interval.
        Specified by:
        lockInterruptibly in interface RLock
        Parameters:
        leaseTime - the maximum time to hold the lock after it's acquisition, if it hasn't already been released by invoking unlock. 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 defined leaseTime. Waits up to defined waitTime if necessary until the lock became available. Lock will be released automatically after defined leaseTime interval.
        Specified by:
        tryLock in interface RLock
        Parameters:
        waitTime - the maximum time to acquire the lock
        leaseTime - lease time
        unit - time unit
        Returns:
        true if lock is successfully acquired, otherwise false if lock is already set.
        Throws:
        - - if the thread is interrupted
      • tryLockAsync

        public > tryLockAsync​(long waitTime,
                                             long leaseTime,
                                              unit,
                                             long threadId)
        Description copied from interface: RLockAsync
        Tries to acquire the lock by thread with specified threadId and leaseTime. Waits up to defined waitTime if necessary until the lock became available. Lock will be released automatically after defined leaseTime interval.
        Specified by:
        tryLockAsync in interface RLockAsync
        Parameters:
        waitTime - time interval to acquire lock
        leaseTime - time interval after which lock will be released automatically
        unit - the time unit of the waitTime and leaseTime arguments
        threadId - id of thread
        Returns:
        true if lock acquired otherwise false
      • tryLockAsync

        public > tryLockAsync​(long waitTime,
                                             long leaseTime,
                                              unit)
        Description copied from interface: RLockAsync
        Tries to acquire the lock with defined leaseTime. Waits up to defined waitTime if necessary until the lock became available. Lock will be released automatically after defined leaseTime interval.
        Specified by:
        tryLockAsync in interface RLockAsync
        Parameters:
        waitTime - the maximum time to acquire the lock
        leaseTime - lease time
        unit - time unit
        Returns:
        true if lock is successfully acquired, otherwise false 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 specified threadId.
        Specified by:
        unlockAsync in interface RLockAsync
        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 interface RLockAsync
        Returns:
        true if lock existed and now unlocked otherwise false
      • unlockAsync

        public > unlockAsync()
        Description copied from interface: RLockAsync
        Unlocks the lock
        Specified by:
        unlockAsync in interface RLockAsync
        Returns:
        void
      • tryLockAsync

        public > tryLockAsync()
        Description copied from interface: RLockAsync
        Tries to acquire the lock.
        Specified by:
        tryLockAsync in interface RLockAsync
        Returns:
        true if lock acquired otherwise false
      • lockAsync

        public > lockAsync()
        Description copied from interface: RLockAsync
        Acquires the lock. Waits if necessary until lock became available.
        Specified by:
        lockAsync in interface RLockAsync
        Returns:
        void
      • lockAsync

        public > lockAsync​(long threadId)
        Description copied from interface: RLockAsync
        Acquires the lock by thread with defined threadId. Waits if necessary until lock became available.
        Specified by:
        lockAsync in interface RLockAsync
        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 specified threadId.
        Specified by:
        tryLockAsync in interface RLockAsync
        Parameters:
        threadId - id of thread
        Returns:
        true if lock acquired otherwise false
      • tryLockAsync

        public > tryLockAsync​(long waitTime,
                                              unit)
        Description copied from interface: RLockAsync
        Tries to acquire the lock. Waits up to defined waitTime if necessary until the lock became available.
        Specified by:
        tryLockAsync in interface RLockAsync
        Parameters:
        waitTime - the maximum time to acquire the lock
        unit - time unit
        Returns:
        true if lock is successfully acquired, otherwise false 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 interface RLockAsync
        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
        Specified by:
        getName in interface RLock
        Returns:
        name - name of object
      • forceUnlock

        public boolean forceUnlock()
        Description copied from interface: RLock
        Unlocks the lock independently of its state
        Specified by:
        forceUnlock in interface RLock
        Returns:
        true if lock existed and now unlocked otherwise false
      • isLocked

        public boolean isLocked()
        Description copied from interface: RLock
        Checks if the lock locked by any thread
        Specified by:
        isLocked in interface RLock
        Returns:
        true if locked otherwise false
      • isLockedAsync

        public > isLockedAsync()
        Description copied from interface: RLockAsync
        Checks if the lock locked by any thread
        Specified by:
        isLockedAsync in interface RLockAsync
        Returns:
        true if locked otherwise false
      • isHeldByThread

        public boolean isHeldByThread​(long threadId)
        Description copied from interface: RLock
        Checks if the lock is held by thread with defined threadId
        Specified by:
        isHeldByThread in interface RLock
        Parameters:
        threadId - Thread ID of locking thread
        Returns:
        true if held by thread with given id otherwise false
      • isHeldByCurrentThread

        public boolean isHeldByCurrentThread()
        Description copied from interface: RLock
        Checks if this lock is held by the current thread
        Specified by:
        isHeldByCurrentThread in interface RLock
        Returns:
        true if held by current thread otherwise false
      • getHoldCount

        public int getHoldCount()
        Description copied from interface: RLock
        Number of holds on this lock by the current thread
        Specified by:
        getHoldCount in interface RLock
        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 interface RLockAsync
        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 interface RLock
        Returns:
        time in milliseconds -2 if the lock does not exist. -1 if the lock exists but has no associated expire.