| java.lang.Object org.apache.commons.transaction.locking.GenericLockManager org.apache.commons.transaction.locking.ReadWriteLockManager org.apache.commons.transaction.locking.ReadWriteUpgradeLockManager
ReadWriteUpgradeLockManager | public class ReadWriteUpgradeLockManager extends ReadWriteLockManager (Code) | | Manager for
org.apache.commons.transaction.locking.ReadWriteUpgradeLock s on
resources.
The idea (as explained by Jim LoVerde) is that only one owner can hold an
upgrade lock, but while that is held, it is possible for read locks to exist
and/or be obtained, and when the request is made to upgrade to a write lock
by the same owner, the lock manager prevents additional read locks until the
write lock can be aquired.
In this sense the write lock becomes preferred over all other locks when it gets upgraded from
a upgrate lock. Preferred means that if it has to wait and others wait as well it will be
served before all other none preferred locking requests.
version: $Id: ReadWriteUpgradeLockManager.java 493628 2007-01-07 01:42:48Z joerg $ See Also: ReadWriteUpgradeLock since: 1.1 |
ReadWriteUpgradeLockManager | public ReadWriteUpgradeLockManager(LoggerFacade logger, long timeoutMSecs)(Code) | | Creates a new read/write/upgrade lock manager.
Parameters: logger - generic logger used for all kind of debug logging Parameters: timeoutMSecs - specifies the maximum time to wait for a lock in milliseconds |
tryUpgradeLock | public boolean tryUpgradeLock(Object ownerId, Object resourceId)(Code) | | Tries to acquire a reentrant upgrade lock on a resource.
This method does not block, but immediatly returns. If a lock is not
available false will be returned.
Parameters: ownerId - a unique id identifying the entity that wants to acquire thislock Parameters: resourceId - the resource to get the lock for true if the lock has been acquired, false otherwise |
tryWriteLock | public boolean tryWriteLock(Object ownerId, Object resourceId)(Code) | | Tries to acquire an exclusive, reentrant write lock on a resource.
This method does not block, but immediatly returns. If a lock is not
available false will be returned.
Parameters: ownerId - a unique id identifying the entity that wants to acquire thislock Parameters: resourceId - the resource to get the lock for true if the lock has been acquired, false otherwise |
upgradeLock | public void upgradeLock(Object ownerId, Object resourceId) throws LockException(Code) | | Tries to acquire a reentrant upgrade lock on a resource.
This method blocks and waits for the lock in case it is not avaiable. If
there is a timeout or a deadlock or the thread is interrupted a
LockException is thrown.
Parameters: ownerId - a unique id identifying the entity that wants to acquire thislock Parameters: resourceId - the resource to get the level for throws: LockException - will be thrown when the lock can not be acquired |
writeLock | public void writeLock(Object ownerId, Object resourceId) throws LockException(Code) | | Tries to acquire an exclusive, reentrant write lock on a resource.
This method blocks and waits for the lock in case it is not avaiable. If
there is a timeout or a deadlock or the thread is interrupted a
LockException is thrown.
Parameters: ownerId - a unique id identifying the entity that wants to acquire thislock Parameters: resourceId - the resource to get the level for throws: LockException - will be thrown when the lock can not be acquired |
Methods inherited from org.apache.commons.transaction.locking.GenericLockManager | protected void addOwner(Object ownerId, GenericLock lock)(Code)(Java Doc) public MultiLevelLock atomicGetOrCreateLock(Object resourceId)(Code)(Java Doc) public boolean checkLock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant)(Code)(Java Doc) protected GenericLock createLock(Object resourceId)(Code)(Java Doc) protected void doLock(GenericLock lock, Object ownerId, Object resourceId, int targetLockLevel, int compatibility, boolean preferred, long timeoutMSecs)(Code)(Java Doc) public Set getAll(Object ownerId)(Code)(Java Doc) public int getLevel(Object ownerId, Object resourceId)(Code)(Java Doc) public MultiLevelLock getLock(Object resourceId)(Code)(Java Doc) public Collection getLocks()(Code)(Java Doc) protected long getNextGlobalConflictTimeout(Set conflicts)(Code)(Java Doc) public boolean hasLock(Object ownerId, Object resourceId, int lockLevel)(Code)(Java Doc) public void lock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant) throws LockException(Code)(Java Doc) public void lock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant, long timeoutMSecs) throws LockException(Code)(Java Doc) public void lock(Object ownerId, Object resourceId, int targetLockLevel, int compatibility, boolean preferred, long timeoutMSecs) throws LockException(Code)(Java Doc) public boolean release(Object ownerId, Object resourceId)(Code)(Java Doc) public void releaseAll(Object ownerId)(Code)(Java Doc) protected void releaseAllNoTimeOutReset(Object ownerId)(Code)(Java Doc) protected boolean releaseTimedOutOwners()(Code)(Java Doc) public void removeLock(MultiLevelLock lock)(Code)(Java Doc) protected void removeOwner(Object ownerId, GenericLock lock)(Code)(Java Doc) public void startGlobalTimeout(Object ownerId, long timeoutMSecs)(Code)(Java Doc) protected boolean timeOut(Object ownerId)(Code)(Java Doc) protected void timeoutCheck(Object ownerId) throws LockException(Code)(Java Doc) public synchronized String toString()(Code)(Java Doc) public boolean tryLock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant)(Code)(Java Doc) protected boolean wouldDeadlock(Object ownerId, Set path)(Code)(Java Doc)
|
|
|