org.eclipse.net4j.util.concurrent
Interface IRWLockManager<OBJECT,CONTEXT>

All Known Subinterfaces:
IRWOLockManager<OBJECT,CONTEXT>
All Known Implementing Classes:
RWLockManager, RWOLockManager

public interface IRWLockManager<OBJECT,CONTEXT>

Support Multiple reads/no write and upgrade lock from read to write. Many context could request write lock at the same time. It will privileges first context that has already a read lock. If no one has any read lock, it's "first come first serve".

Since:
3.0

Nested Class Summary
static class IRWLockManager.LockType
           
 
Field Summary
static int NO_WAIT
           
static int WAIT
           
 
Method Summary
 boolean hasLock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock)
           
 boolean hasLockByOthers(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock)
           
 void lock(IRWLockManager.LockType type, CONTEXT context, Collection<? extends OBJECT> objectsToLock, long timeout)
           
 void lock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock, long timeout)
           
 void unlock(CONTEXT context)
          Attempts to release all locks(read and write) for a given context.
 void unlock(IRWLockManager.LockType type, CONTEXT context, Collection<? extends OBJECT> objectsToUnlock)
          Attempts to release for a given locktype, context and objects.
 

Field Detail

WAIT

static final int WAIT
See Also:
Constant Field Values

NO_WAIT

static final int NO_WAIT
See Also:
Constant Field Values
Method Detail

lock

void lock(IRWLockManager.LockType type,
          CONTEXT context,
          Collection<? extends OBJECT> objectsToLock,
          long timeout)
          throws InterruptedException
Throws:
InterruptedException

lock

void lock(IRWLockManager.LockType type,
          CONTEXT context,
          OBJECT objectToLock,
          long timeout)
          throws InterruptedException
Throws:
InterruptedException

unlock

void unlock(IRWLockManager.LockType type,
            CONTEXT context,
            Collection<? extends OBJECT> objectsToUnlock)
Attempts to release for a given locktype, context and objects.

Throws:
IllegalMonitorStateException - Unlocking objects without lock.

unlock

void unlock(CONTEXT context)
Attempts to release all locks(read and write) for a given context.


hasLock

boolean hasLock(IRWLockManager.LockType type,
                CONTEXT context,
                OBJECT objectToLock)

hasLockByOthers

boolean hasLockByOthers(IRWLockManager.LockType type,
                        CONTEXT context,
                        OBJECT objectToLock)


Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others.