org.infinispan.util.concurrent.locks.containers
Class AbstractPerEntryLockContainer
java.lang.Object
org.infinispan.util.concurrent.locks.containers.AbstractPerEntryLockContainer
- All Implemented Interfaces:
- LockContainer
- Direct Known Subclasses:
- OwnableReentrantPerEntryLockContainer, ReentrantPerEntryLockContainer
public abstract class AbstractPerEntryLockContainer
- extends Object
- implements LockContainer
An abstract lock container that creates and maintains a new lock per entry
- Since:
- 4.0
- Author:
- Manik Surtani
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
locks
protected final ConcurrentMap<Object,Lock> locks
AbstractPerEntryLockContainer
protected AbstractPerEntryLockContainer(int concurrencyLevel)
newLock
protected abstract Lock newLock()
getLock
public final Lock getLock(Object key)
- Specified by:
getLock
in interface LockContainer
- Parameters:
key
- object
- Returns:
- the lock for a specific object
getNumLocksHeld
public int getNumLocksHeld()
- Specified by:
getNumLocksHeld
in interface LockContainer
- Returns:
- number of locks held
size
public int size()
- Specified by:
size
in interface LockContainer
- Returns:
- the size of the shared lock pool
acquireLock
public Lock acquireLock(Object key,
long timeout,
TimeUnit unit)
throws InterruptedException
- Description copied from interface:
LockContainer
- Attempts to acquire a lock for the given object within certain time boundaries defined by the timeout and
time unit parameters.
- Specified by:
acquireLock
in interface LockContainer
- Parameters:
key
- Object to acquire lock ontimeout
- Time after which the lock acquisition will failunit
- Time unit of the given timeout
- Returns:
- If lock was acquired it returns the corresponding Lock object. If lock was not acquired, it returns null
- Throws:
InterruptedException
- If the lock acquisition was interrupted
releaseLock
public void releaseLock(Object key)
- Description copied from interface:
LockContainer
- Release lock on the given key.
- Specified by:
releaseLock
in interface LockContainer
- Parameters:
key
- Object on which lock is to be removed
getLockId
public int getLockId(Object key)
- Description copied from interface:
LockContainer
- Returns the 'id' of the lock that will be used to guard access to a given key in the cache. Particularly useful
if Lock Striping is used and locks may guard more than one key. This mechanism can be used to check whether
keys may end up sharing the same lock.
If lock-striping is not used, the identity hash code of the lock created for this specific key is returned. While
this may not be of much value, it is done to maintain API compatibility of this method regardless of underlying
locking scheme.
- Specified by:
getLockId
in interface LockContainer
- Parameters:
key
- key to test for
- Returns:
- the ID of the lock.
Copyright © 2011 JBoss, a division of Red Hat. All Rights Reserved.