Class DebuggingSynchronizationManager<T>
java.lang.Object
de.bsvrz.ars.ars.mgmt.datatree.synchronization.DebuggingSynchronizationManager<T>
- All Implemented Interfaces:
SynchronizationManager<T>
public class DebuggingSynchronizationManager<T> extends java.lang.Object implements SynchronizationManager<T>
Delegate auf einen SynchronizationManager, der bei langen Wartedauern Debug-Meldungen erzeugt.
-
Constructor Summary
Constructors Constructor Description DebuggingSynchronizationManager(SynchronizationManager<T> delegate)
Erstellt einen neuen DebuggingSynchronizationManager -
Method Summary
Modifier and Type Method Description SyncKey<T>
acquireWriteKey(T element)
Fordert exklusiven Zugriff (Schreibzugriff) auf das angegebene Element an.SyncKey<T>
acquireWriteKey(T element, java.time.Duration timeout)
Fordert exklusiven Zugriff (Schreibzugriff) auf das angegebene Element an.com.google.common.collect.SetMultimap<T,SyncKey<T>>
getLocks()
Gibt alle aktuell angeforderten Schlüssel zurück.java.lang.String
toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Constructor Details
-
DebuggingSynchronizationManager
Erstellt einen neuen DebuggingSynchronizationManager- Parameters:
delegate
- Delegate-Objekt (!= null)
-
-
Method Details
-
acquireWriteKey
Description copied from interface:SynchronizationManager
Fordert exklusiven Zugriff (Schreibzugriff) auf das angegebene Element an. Ein Schreibzugriff darf nur angefordert werden, wenn dieser Thread noch keinen Lesezugriff besitzt. Ansonsten würde dies Deadlocks verursachen. Sollte dieser Thread bereits einen Schreibzugriff besitzen ist das jedoch kein Problem.- Specified by:
acquireWriteKey
in interfaceSynchronizationManager<T>
- Parameters:
element
- Element- Returns:
- Schlüssel zum Zugriff auf das Element. Solange der Schlüssel gültig ist, garantiert diese Klasse, kann kein anderer Thread einen anderen Schlüssel auf dieses Element hält.
-
acquireWriteKey
public SyncKey<T> acquireWriteKey(T element, java.time.Duration timeout) throws SynchronizationFailedExceptionDescription copied from interface:SynchronizationManager
Fordert exklusiven Zugriff (Schreibzugriff) auf das angegebene Element an. Ein Schreibzugriff darf nur angefordert werden, wenn dieser Thread noch keinen Lesezugriff besitzt. Ansonsten würde dies Deadlocks verursachen. Sollte dieser Thread bereits einen Schreibzugriff besitzen ist das jedoch kein Problem.- Specified by:
acquireWriteKey
in interfaceSynchronizationManager<T>
- Parameters:
element
- Elementtimeout
- maximale Wartezeit zur synchronisierung- Returns:
- Schlüssel zum Zugriff auf das Element. Solange der Schlüssel gültig ist, garantiert diese Klasse, kann kein anderer Thread einen anderen Schlüssel auf dieses Element hält.
- Throws:
SynchronizationFailedException
- Falls der Schlüssel nicht geholt werden konnte (z. B. timeout oder interrupted beim warten auf Schlüssel)
-
getLocks
Description copied from interface:SynchronizationManager
Gibt alle aktuell angeforderten Schlüssel zurück. Diese Funktion existiert nur zum Debugging bzw. zur Fehleranalyse um z. B. bei Deadlocks den Zustand ausgeben zu können.- Specified by:
getLocks
in interfaceSynchronizationManager<T>
- Returns:
- alle aktuell angeforderten Schlüssel
-
toString
public java.lang.String toString()- Overrides:
toString
in classjava.lang.Object
-