Package org.alfresco.util
Class ReadWriteLockExecuter<T>
java.lang.Object
org.alfresco.util.ReadWriteLockExecuter<T>
Utility object that wraps read and write methods within the context of a
ReentrantReadWriteLock
. The callback's methods are best-suited
to fetching values from a cache or protecting members that need lazy
initialization.
Client code should construct an instance of this class for each resource (or set of resources) that need to be protected.
- Since:
- 3.4
- Author:
- Derek Hulley
-
Constructor Details
-
ReadWriteLockExecuter
public ReadWriteLockExecuter()Default constructor
-
-
Method Details
-
getWithReadLock
Execute the read-only part of the work.- Returns:
- Returns a value of interest or null if
the
getWithWriteLock()
method must be called - Throws:
Throwable
- all checked exceptions are wrapped in a RuntimeException
-
getWithWriteLock
Execute the write part of the work.NOTE: It is important to perform a double-check on the resource before assuming it is not null; there is a window between the
getWithReadLock()
and thegetWithWriteLock()
during which another thread may have populated the resource of interest.- Returns:
- Returns the value of interest of null
- Throws:
Throwable
- all checked exceptions are wrapped in a RuntimeException
-
execute
-