An interface controlling synchronization of configuration instances.
Each {@code Configuration} object derived from {@link AbstractConfiguration}has an associated {@code Synchronizer} object. Before an operation on theconfiguration is performed (e.g. a property read or an update), the {@code Synchronizer} is invoked. Depending on the concrete implementation ofthe {@code 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 {@code Synchronizer} interface. By assigning different {@code 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 {@code Synchronizer} is notified when read or write operationsstart 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.
@version $Id: Synchronizer.java 1486351 2013-05-25 19:09:41Z oheger $ @since 2.0
|
|