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

java.lang.Object
  extended by org.infinispan.util.concurrent.locks.containers.AbstractStripedLockContainer
All Implemented Interfaces:
LockContainer
Direct Known Subclasses:
OwnableReentrantStripedLockContainer, ReentrantStripedLockContainer

@ThreadSafe
public abstract class AbstractStripedLockContainer
extends Object
implements LockContainer

A container for locks. Used with lock striping.

Since:
4.0
Author:
Manik Surtani (manik@jboss.org)

Constructor Summary
AbstractStripedLockContainer()
           
 
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.
 int getLockId(Object key)
          Returns the 'id' of the lock that will be used to guard access to a given key in the cache.
protected abstract  void initLocks(int numLocks)
           
 void releaseLock(Object key)
          Release lock on the given key.
 
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
getLock, getNumLocksHeld, isLocked, ownsLock, size
 

Constructor Detail

AbstractStripedLockContainer

public AbstractStripedLockContainer()
Method Detail

initLocks

protected abstract void initLocks(int numLocks)

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

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.