Synchronizer
constructor, e.g. new Packages.net.sourceforge.htmlunit.corejs.javascript.Synchronizer(fun)
. The resulting object is a function that establishes an exclusive lock on the this
object of its invocation. The Rhino shell provides a short-cut for the creation of synchronized methods: sync(fun)
has the same effect as calling the above constructor.
@see net.sourceforge.htmlunit.corejs.javascript.Delegator
@author Matthias Radestock
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.0An 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 1624601 2014-09-12 18:04:36Z oheger $ @since 2.0Synchronizer
constructor, e.g. new Packages.org.mozilla.javascript.Synchronizer(fun)
. The resulting object is a function that establishes an exclusive lock on the this
object of its invocation. The Rhino shell provides a short-cut for the creation of synchronized methods: sync(fun)
has the same effect as calling the above constructor.
@see org.mozilla.javascript.Delegator
@author Matthias Radestock
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|