Class ReadWriteBackingMap.ReadLatch

  • Enclosing class:
    ReadWriteBackingMap

    protected static class ReadWriteBackingMap.ReadLatch
    extends Object
    A synchronization construct used to coordinate asynchronous loads by the refresh-ahead thread with cache accesses by other threads.

    The refresh-ahead thread places a new ReadLatch in the control map before performing a load operation on the cache store. The presence of the latch signals to a thread executing the ReadWriteBackingMap.get(java.lang.Object) method that an asynchronous load is in progress. This thread can then wait on the latch to get the results of the asynchronous load. This thread is then responsible for removing the latch from the control map.

    Additionally, a thread performing a ReadWriteBackingMap.put(java.lang.Object, java.lang.Object) or ReadWriteBackingMap.remove(java.lang.Object) operation can cancel an ongoing asynchronous load using the latch. This thread is also responsible for removing the latch from the control map.

    Author:
    jh 2005.02.11
    • Constructor Detail

      • ReadLatch

        protected ReadLatch​(Object oKey)
        Create a new ReadLatch for the specified key.
        Parameters:
        oKey - the key that is being loaded by the refresh-ahead thread
    • Method Detail

      • cancel

        public void cancel()
        Cancel the load operation. This method has no effect if the operation has already been completed or canceled.
      • cancel

        public void cancel​(Throwable t)
        Cancel the load operation due to an exception. This method has no effect if the operation has already been completed or canceled.
        Parameters:
        t - the exception responsible for cancelling the load
      • complete

        public void complete​(Object oValue)
        Complete the load operation. The specified value and entry is the result of the load operation. This method has no effect if the operation has already been completed or canceled.
        Parameters:
        oValue - the result of the load operation
      • isComplete

        public boolean isComplete()
        Return true if the load operation is complete. The results of the load operation can be retrieved using the getValue() method.
        Returns:
        true if the load operation is complete
      • isCanceled

        public boolean isCanceled()
        Return true if the load operation has been canceled.
        Returns:
        true if the load operation has been canceled
      • getKey

        public Object getKey()
        Return the key that is being loaded by the refresh-ahead thread.
        Returns:
        the key that is being loaded
      • getValue

        public Object getValue()
        Return the result of the load operation.

        Note: this method should not be called by the refresh-ahead daemon thread

        Returns:
        the result of the load operation