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

      public DebuggingSynchronizationManager​(SynchronizationManager<T> delegate)
      Erstellt einen neuen DebuggingSynchronizationManager
      Parameters:
      delegate - Delegate-Objekt (!= null)
  • Method Details

    • acquireWriteKey

      public SyncKey<T> acquireWriteKey​(T element)
      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 interface SynchronizationManager<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 SynchronizationFailedException
      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 interface SynchronizationManager<T>
      Parameters:
      element - Element
      timeout - 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

      public com.google.common.collect.SetMultimap<T,​SyncKey<T>> 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 interface SynchronizationManager<T>
      Returns:
      alle aktuell angeforderten Schlüssel
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object