Package com.coditory.sherlock
Interface DistributedLock
- All Known Implementing Classes:
DistributedLockMock
public interface DistributedLock
A distributed lock.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic class
static class
-
Method Summary
Modifier and TypeMethodDescriptionboolean
acquire()
Try to acquire the lock.boolean
Try to acquire the lock for a given duration.acquireAndExecute
(Runnable action) Acquire a lock and release it after action is executed.acquireAndExecute
(Duration duration, Runnable action) Acquire a lock for specific duration and release it after action is executed.boolean
Try to acquire the lock without expiring date.acquireForeverAndExecute
(Runnable action) Acquire a lock for specific duration and release it after action is executed.getId()
Return the lock id.boolean
release()
Try to release the lock.releaseAndExecute
(Runnable action) Run the action if lock is released.
-
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
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
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 lockaction
- to be executed when lock is acquired- Returns:
DistributedLock.AcquireAndExecuteResult
- See Also:
-
acquireForeverAndExecute
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
Run the action if lock is released.- Parameters:
action
- to be executed when lock is released- Returns:
DistributedLock.ReleaseAndExecuteResult
- See Also:
-