Class RWOLockManager<OBJECT,CONTEXT>
- java.lang.Object
- 
- org.eclipse.net4j.util.event.Notifier
- 
- org.eclipse.net4j.util.lifecycle.Lifecycle
- 
- org.eclipse.net4j.util.concurrent.RWOLockManager<OBJECT,CONTEXT>
 
 
 
- 
- All Implemented Interfaces:
- IRWLockManager<OBJECT,CONTEXT>,- IRWOLockManager<OBJECT,CONTEXT>,- INotifier,- INotifier.INotifier2,- IDeactivateable,- ILifecycle,- ILifecycle.DeferrableActivation
 
 public class RWOLockManager<OBJECT,CONTEXT> extends Lifecycle implements IRWOLockManager<OBJECT,CONTEXT> Keeps track of locks on objects. Locks are owned by contexts. A particular combination of locks and their owners, for a given object, is represented by instances of theRWOLockManager.LockStateclass. This class is also responsible for deciding whether or not a new lock can be granted, based on the locks already present.- Since:
- 3.2
- Author:
- Caspar De Groot
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static classRWOLockManager.LockState<OBJECT,CONTEXT>Represents a combination of locks for one OBJECT.- 
Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycleILifecycle.DeferrableActivation
 - 
Nested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifierINotifier.INotifier2
 - 
Nested classes/interfaces inherited from interface org.eclipse.net4j.util.concurrent.IRWLockManagerIRWLockManager.LockType
 
- 
 - 
Field Summary- 
Fields inherited from interface org.eclipse.net4j.util.concurrent.IRWLockManagerNO_WAIT, WAIT
 
- 
 - 
Constructor SummaryConstructors Constructor Description RWOLockManager()
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidchangeContext(CONTEXT oldContext, CONTEXT newContext)protected java.util.Map<CONTEXT,java.util.Set<RWOLockManager.LockState<OBJECT,CONTEXT>>>createContextToLocksMap()protected java.util.Map<OBJECT,RWOLockManager.LockState<OBJECT,CONTEXT>>createObjectToLocksMap()protected longcurrentTimeMillis()protected java.util.Map<CONTEXT,java.util.Set<RWOLockManager.LockState<OBJECT,CONTEXT>>>getContextToLocksMap()All access to the returned map must be properly synchronized on thisRWOLockManager.RWOLockManager.LockState<OBJECT,CONTEXT>getLockState(OBJECT key)java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>>getLockStates()voidgetLockStates(java.util.Collection<OBJECT> keys, java.util.function.BiConsumer<OBJECT,RWOLockManager.LockState<OBJECT,CONTEXT>> consumer)protected java.util.Map<OBJECT,RWOLockManager.LockState<OBJECT,CONTEXT>>getObjectToLocksMap()All access to the returned map must be properly synchronized on thisRWOLockManager.booleanhasLock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock)booleanhasLockByOthers(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock)voidlock(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToLock, long timeout)voidlock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock, long timeout)java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>>lock2(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToLock, long timeout)Adds locks of the given type, owned by the given context on the given objects.voidsetLockState(OBJECT key, RWOLockManager.LockState<OBJECT,CONTEXT> lockState)static voidsetUnlockAll(boolean on)voidunlock(CONTEXT context)Attempts to release all locks(read and write) for a given context.voidunlock(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToUnlock)Attempts to release for a given locktype, context and objects.java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>>unlock2(CONTEXT context)Removes all locks owned by the given context on any objects.java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>>unlock2(CONTEXT context, java.util.Collection<? extends OBJECT> objectsToUnlock)Removes all locks owned by the given context.java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>>unlock2(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToUnlock)Removes all locks of the given type, owned by the given context on the given objects.- 
Methods inherited from class org.eclipse.net4j.util.lifecycle.Lifecycleactivate, checkActive, checkArg, checkArg, checkInactive, checkNull, checkState, checkState, deactivate, deferredActivate, doActivate, doAfterActivate, doBeforeActivate, doBeforeDeactivate, doDeactivate, dump, getLifecycleState, isActive, isDeferredActivation, toString
 - 
Methods inherited from class org.eclipse.net4j.util.event.NotifieraddListener, addUniqueListener, fireEvent, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListener, hasListeners, lastListenerRemoved, listenerAdded, listenerRemoved, removeListener
 - 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 - 
Methods inherited from interface org.eclipse.net4j.util.event.INotifieraddListener, getListeners, hasListeners, removeListener
 
- 
 
- 
- 
- 
Method Detail- 
lockpublic void lock(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToLock, long timeout) throws java.lang.InterruptedException - Specified by:
- lockin interface- IRWLockManager<OBJECT,CONTEXT>
- Throws:
- java.lang.InterruptedException
 
 - 
lock2public java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>> lock2(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToLock, long timeout) throws java.lang.InterruptedException Description copied from interface:IRWOLockManagerAdds locks of the given type, owned by the given context on the given objects.- Specified by:
- lock2in interface- IRWOLockManager<OBJECT,CONTEXT>
- Throws:
- java.lang.InterruptedException
 
 - 
lockpublic void lock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock, long timeout) throws java.lang.InterruptedException - Specified by:
- lockin interface- IRWLockManager<OBJECT,CONTEXT>
- Throws:
- java.lang.InterruptedException
 
 - 
unlockpublic void unlock(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToUnlock) Description copied from interface:IRWLockManagerAttempts to release for a given locktype, context and objects.- Specified by:
- unlockin interface- IRWLockManager<OBJECT,CONTEXT>
 
 - 
unlock2public java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>> unlock2(CONTEXT context, java.util.Collection<? extends OBJECT> objectsToUnlock) Description copied from interface:IRWOLockManagerRemoves all locks owned by the given context.- Specified by:
- unlock2in interface- IRWOLockManager<OBJECT,CONTEXT>
 
 - 
unlock2public java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>> unlock2(IRWLockManager.LockType type, CONTEXT context, java.util.Collection<? extends OBJECT> objectsToUnlock) Description copied from interface:IRWOLockManagerRemoves all locks of the given type, owned by the given context on the given objects.- Specified by:
- unlock2in interface- IRWOLockManager<OBJECT,CONTEXT>
 
 - 
unlockpublic void unlock(CONTEXT context) Description copied from interface:IRWLockManagerAttempts to release all locks(read and write) for a given context.- Specified by:
- unlockin interface- IRWLockManager<OBJECT,CONTEXT>
 
 - 
unlock2public java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>> unlock2(CONTEXT context) Description copied from interface:IRWOLockManagerRemoves all locks owned by the given context on any objects.- Specified by:
- unlock2in interface- IRWOLockManager<OBJECT,CONTEXT>
 
 - 
hasLockpublic boolean hasLock(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock) - Specified by:
- hasLockin interface- IRWLockManager<OBJECT,CONTEXT>
 
 - 
hasLockByOtherspublic boolean hasLockByOthers(IRWLockManager.LockType type, CONTEXT context, OBJECT objectToLock) - Specified by:
- hasLockByOthersin interface- IRWLockManager<OBJECT,CONTEXT>
 
 - 
currentTimeMillisprotected long currentTimeMillis() 
 - 
createObjectToLocksMapprotected java.util.Map<OBJECT,RWOLockManager.LockState<OBJECT,CONTEXT>> createObjectToLocksMap() 
 - 
createContextToLocksMapprotected java.util.Map<CONTEXT,java.util.Set<RWOLockManager.LockState<OBJECT,CONTEXT>>> createContextToLocksMap() 
 - 
getObjectToLocksMapprotected final java.util.Map<OBJECT,RWOLockManager.LockState<OBJECT,CONTEXT>> getObjectToLocksMap() All access to the returned map must be properly synchronized on thisRWOLockManager.
 - 
getContextToLocksMapprotected final java.util.Map<CONTEXT,java.util.Set<RWOLockManager.LockState<OBJECT,CONTEXT>>> getContextToLocksMap() All access to the returned map must be properly synchronized on thisRWOLockManager.
 - 
getLockStatepublic RWOLockManager.LockState<OBJECT,CONTEXT> getLockState(OBJECT key) 
 - 
getLockStatespublic void getLockStates(java.util.Collection<OBJECT> keys, java.util.function.BiConsumer<OBJECT,RWOLockManager.LockState<OBJECT,CONTEXT>> consumer) - Since:
- 3.16
 
 - 
getLockStatespublic java.util.List<RWOLockManager.LockState<OBJECT,CONTEXT>> getLockStates() - Since:
- 3.5
 
 - 
setLockStatepublic void setLockState(OBJECT key, RWOLockManager.LockState<OBJECT,CONTEXT> lockState) 
 - 
setUnlockAllpublic static void setUnlockAll(boolean on) - Since:
- 3.7
 
 
- 
 
-