org.infinispan.util.concurrent.locks.containers
Class AbstractPerEntryLockContainer

java.lang.Object
  extended by 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

Field Summary
protected  ConcurrentMap<Object,Lock> locks
           
 
Constructor Summary
protected AbstractPerEntryLockContainer(int concurrencyLevel)
           
 
Method Summary
 Lock acquireLock(Object key, long timeout, TimeUnit unit)
          Attempts to acquire a lock for the given object within certain time boundaries defined by the timeout and time unit parameters.
 Lock getLock(Object key)
           
 int getNumLocksHeld()
           
protected abstract  Lock newLock()
           
 void releaseLock(Object key)
          Release lock on the given key.
 int size()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.infinispan.util.concurrent.locks.containers.LockContainer
isLocked, ownsLock
 

Field Detail

locks

protected final ConcurrentMap<Object,Lock> locks
Constructor Detail

AbstractPerEntryLockContainer

protected AbstractPerEntryLockContainer(int concurrencyLevel)
Method Detail

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 on
timeout - Time after which the lock acquisition will fail
unit - 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


Copyright © 2011 JBoss, a division of Red Hat. All Rights Reserved.