Interface LockManager
- All Known Implementing Classes:
DefaultLockManager
,ExtendedStatisticLockManager
,TopKeyLockManager
public interface LockManager
An interface to deal with all aspects of acquiring and releasing locks for cache entries.
- Since:
- 4.0
- Author:
- Manik Surtani (manik@jboss.org), Mircea.Markus@jboss.com, Pedro Ruivo
-
Method Summary
Modifier and TypeMethodDescriptionint
Retrieves the owner of the lock for thekey
.boolean
Tests if thekey
is locked.Attempts to lock thekey
if the lock isn't already held by thelockOwner
.lockAll
(Collection<?> keys, Object lockOwner, long time, TimeUnit unit) Same aslock(Object, Object, long, TimeUnit)
but for multiple keys.boolean
Tests if thelockOwner
owns a lock on thekey
.Prints lock information for all locks.void
Releases the lock for thekey
if thelockOwner
is the lock owner.void
unlockAll
(Collection<?> keys, Object lockOwner) Same asunlock(Object, Object)
but for multiple keys.void
unlockAll
(InvocationContext context) Same asunlockAll(context.getLockedKeys(), context.getKeyLockOwner();
.
-
Method Details
-
lock
Attempts to lock thekey
if the lock isn't already held by thelockOwner
.This method is non-blocking and return immediately a
LockPromise
. TheLockPromise
can (and should) be used by the invoker to check when the lock is really acquired by invokingLockPromise.lock()
.- Parameters:
key
- key to lock.lockOwner
- the owner of the lock.time
- the maximum time to wait for the lockunit
- the time unit of thetime
argument- Returns:
- the
KeyAwareLockPromise
associated to this keys.
-
lockAll
Same aslock(Object, Object, long, TimeUnit)
but for multiple keys.It ensures no deadlocks if the method is invoked by different lock owners for the same set (or subset) of keys.
- Parameters:
keys
- keys to lock.lockOwner
- the owner of the lock.time
- the maximum time to wait for the lockunit
- the time unit of thetime
argument- Returns:
- the
KeyAwareLockPromise
associated to this keys.
-
unlock
Releases the lock for thekey
if thelockOwner
is the lock owner.Note this method will unlock a lock where the key is the lockOwner
- Parameters:
key
- key to unlock.lockOwner
- the owner of the lock.
-
unlockAll
Same asunlock(Object, Object)
but for multiple keys.Note this method will not unlock a lock where the key is the lockOwner
- Parameters:
keys
- keys to unlock.lockOwner
- the owner of the lock.
-
unlockAll
Same asunlockAll(context.getLockedKeys(), context.getKeyLockOwner();
.Note this method will not unlock a lock where the key is the lockOwner
- Parameters:
context
- the context with the locked keys and the lock owner.
-
ownsLock
Tests if thelockOwner
owns a lock on thekey
.- Parameters:
key
- key to test.lockOwner
- the owner of the lock.- Returns:
true
if the owner does own the lock on the key,false
otherwise.
-
isLocked
Tests if thekey
is locked.- Parameters:
key
- key to test.- Returns:
true
if the key is locked,false
otherwise.
-
getOwner
Retrieves the owner of the lock for thekey
.- Returns:
- the owner of the lock, or
null
if not locked.
-
printLockInfo
String printLockInfo()Prints lock information for all locks.- Returns:
- the lock information
-
getNumberOfLocksHeld
int getNumberOfLocksHeld()- Returns:
- the number of locks held.
-
getLock
-