Interface DistributedLock

All Known Implementing Classes:
DistributedLockMock

public interface DistributedLock
A distributed lock.
See Also:
  • Method Details

    • getId

      String getId()
      Return the lock id.
      Returns:
      the lock id
    • acquire

      boolean acquire()
      Try to acquire the lock. Lock is acquired for a pre configured duration.
      Returns:
      true if lock is acquired
    • acquire

      boolean acquire(Duration duration)
      Try to acquire the lock for a given duration.
      Parameters:
      duration - how much time must pass for the acquired lock to expire
      Returns:
      true if lock is acquired
    • acquireForever

      boolean acquireForever()
      Try to acquire the lock without expiring date.

      It is potentially dangerous. Lookout for a situation when the lock owning instance goes down with out releasing the lock.

      Returns:
      true if lock is acquired
    • release

      boolean release()
      Try to release the lock.
      Returns:
      true if lock was released by this method invocation. If lock has expired or was released earlier then false is returned.
    • acquireAndExecute

      default DistributedLock.AcquireAndExecuteResult acquireAndExecute(Runnable action)
      Acquire a lock and release it after action is executed.

      This is a helper method that makes sure the lock is released when action finishes successfully or throws an exception.

      Parameters:
      action - to be executed when lock is acquired
      Returns:
      DistributedLock.AcquireAndExecuteResult
      See Also:
    • acquireAndExecute

      default DistributedLock.AcquireAndExecuteResult acquireAndExecute(Duration duration, Runnable action)
      Acquire a lock for specific duration and release it after action is executed.

      This is a helper method that makes sure the lock is released when action finishes successfully or throws an exception.

      Parameters:
      duration - how much time must pass to release the lock
      action - to be executed when lock is acquired
      Returns:
      DistributedLock.AcquireAndExecuteResult
      See Also:
    • acquireForeverAndExecute

      default DistributedLock.AcquireAndExecuteResult acquireForeverAndExecute(Runnable action)
      Acquire a lock for specific duration and release it after action is executed.

      This is a helper method that makes sure the lock is released when action finishes successfully or throws an exception.

      Parameters:
      action - to be executed when lock is acquired
      Returns:
      DistributedLock.AcquireAndExecuteResult
      See Also:
    • releaseAndExecute

      default DistributedLock.ReleaseAndExecuteResult releaseAndExecute(Runnable action)
      Run the action if lock is released.
      Parameters:
      action - to be executed when lock is released
      Returns:
      DistributedLock.ReleaseAndExecuteResult
      See Also: