Interface Synchronizer

  • All Known Implementing Classes:
    NoOpSynchronizer, ReadWriteSynchronizer

    public interface Synchronizer

    An interface controlling synchronization of configuration instances.

    Each Configuration object derived from AbstractConfiguration has an associated Synchronizer object. Before an operation on the configuration is performed (e.g. a property read or an update), the Synchronizer is invoked. Depending on the concrete implementation of the Synchronizer used, the configuration can be made thread-safe.

    Whether a configuration has to be thread-safe or not is a matter of a concrete use case. For instance, an application that just reads some configuration settings on startup does need a thread-safe configuration implementation. A configuration in contrast which is shared between multiple components and updated concurrently should better be thread-safe. In order to satisfy both kinds of use cases, the support for thread-safety has been extracted out of the configuration implementation and refactored into this Synchronizer interface. By assigning different Synchronizer implementations to a configuration instance, the instance's support for concurrent access can be adapted to the concrete use case.

    The methods defined by this interface are similar to a read-write lock. The Synchronizer is notified when read or write operations start and end. A concrete implementation can then apply a specific policy to decide when threads need to block or when access to the configuration for the desired operation is granted.

    Since:
    2.0
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void beginRead()
      Notifies this Synchronizer that the current thread is going to start a read operation on the managed configuration.
      void beginWrite()
      Notifies this Synchronizer that the current thread is going to start a write operation on the managed configuration.
      void endRead()
      Notifies this Synchronizer that the current thread has finished its read operation.
      void endWrite()
      Notifies this Synchronizer that the current thread has finished its write operation.
    • Method Detail

      • beginRead

        void beginRead()
        Notifies this Synchronizer that the current thread is going to start a read operation on the managed configuration. This call can block if a concrete implementation decides that the thread has to wait until a specific condition is fulfilled.
      • beginWrite

        void beginWrite()
        Notifies this Synchronizer that the current thread is going to start a write operation on the managed configuration. This call may block. For instance, a concrete implementation may suspend the thread until all read operations currently active are finished,
      • endRead

        void endRead()
        Notifies this Synchronizer that the current thread has finished its read operation. This may cause other waiting threads to be granted access to the managed configuration.
      • endWrite

        void endWrite()
        Notifies this Synchronizer that the current thread has finished its write operation. This may cause other waiting threads to be granted access to the managed configuration.