Class ReadWriteSynchronizer
java.lang.Object
org.apache.commons.configuration2.sync.ReadWriteSynchronizer
- All Implemented Interfaces:
Synchronizer
A special implementation of Synchronizer
based on the JDK's ReentrantReadWriteLock
class.
This class manages a ReadWriteLock
object internally. The methods of the Synchronizer
interface are
delegated to this lock. So this class behaves in the same way as documented for ReentrantReadWriteLock
.
Using this Synchronizer
implementation is appropriate to make configuration objects thread-safe. This means
that multiple threads can read configuration data in parallel; if one thread wants to update the configuration, this
happens with an exclusive lock.
- Since:
- 2.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ReadWriteLock
The lock object used by this Synchronizer. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new instance ofReadWriteSynchronizer
and initializes it with a lock object of typeReentrantReadWriteLock
.Creates a new instance ofReadWriteSynchronizer
and initializes it with the given lock object. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Notifies thisSynchronizer
that the current thread is going to start a read operation on the managed configuration.void
Notifies thisSynchronizer
that the current thread is going to start a write operation on the managed configuration.private static ReadWriteLock
Returns a new default lock object which is used if no lock is passed to the constructor.void
endRead()
Notifies thisSynchronizer
that the current thread has finished its read operation.void
endWrite()
Notifies thisSynchronizer
that the current thread has finished its write operation.
-
Field Details
-
lock
The lock object used by this Synchronizer.
-
-
Constructor Details
-
ReadWriteSynchronizer
Creates a new instance ofReadWriteSynchronizer
and initializes it with the given lock object. This constructor can be used to pass a lock object which has been configured externally. If the lock object is null, a default lock object is created.- Parameters:
l
- the lock object to be used (can be null)
-
ReadWriteSynchronizer
public ReadWriteSynchronizer()Creates a new instance ofReadWriteSynchronizer
and initializes it with a lock object of typeReentrantReadWriteLock
.
-
-
Method Details
-
beginRead
public void beginRead()Description copied from interface:Synchronizer
Notifies thisSynchronizer
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.- Specified by:
beginRead
in interfaceSynchronizer
-
endRead
public void endRead()Description copied from interface:Synchronizer
Notifies thisSynchronizer
that the current thread has finished its read operation. This may cause other waiting threads to be granted access to the managed configuration.- Specified by:
endRead
in interfaceSynchronizer
-
beginWrite
public void beginWrite()Description copied from interface:Synchronizer
Notifies thisSynchronizer
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,- Specified by:
beginWrite
in interfaceSynchronizer
-
endWrite
public void endWrite()Description copied from interface:Synchronizer
Notifies thisSynchronizer
that the current thread has finished its write operation. This may cause other waiting threads to be granted access to the managed configuration.- Specified by:
endWrite
in interfaceSynchronizer
-
createDefaultLock
Returns a new default lock object which is used if no lock is passed to the constructor.- Returns:
- the new default lock object
-