Class AbstractRefCounted

java.lang.Object
org.elasticsearch.core.AbstractRefCounted
All Implemented Interfaces:
RefCounted
Direct Known Subclasses:
SimpleRefCounted

public abstract class AbstractRefCounted extends Object implements RefCounted
A basic RefCounted implementation that is initialized with a ref count of 1 and calls closeInternal() once it reaches a 0 ref count.
  • Field Details

  • Constructor Details

    • AbstractRefCounted

      protected AbstractRefCounted()
  • Method Details

    • incRef

      public final void incRef()
      Description copied from interface: RefCounted
      Increments the refCount of this instance.
      Specified by:
      incRef in interface RefCounted
      See Also:
    • tryIncRef

      public final boolean tryIncRef()
      Description copied from interface: RefCounted
      Tries to increment the refCount of this instance. This method will return true iff the refCount was successfully incremented.
      Specified by:
      tryIncRef in interface RefCounted
      See Also:
    • decRef

      public final boolean decRef()
      Description copied from interface: RefCounted
      Decreases the refCount of this instance. If the refCount drops to 0, then this instance is considered as closed and should not be used anymore.
      Specified by:
      decRef in interface RefCounted
      Returns:
      returns true if the ref count dropped to 0 as a result of calling this method
      See Also:
    • hasReferences

      public final boolean hasReferences()
      Description copied from interface: RefCounted
      Returns true only if there was at least one active reference when the method was called; if it returns false then the object is closed; future attempts to acquire references will fail.
      Specified by:
      hasReferences in interface RefCounted
      Returns:
      whether there are currently any active references to this object.
    • touch

      protected void touch()
      Called whenever the ref count is incremented or decremented. Can be overridden to record access to the instance for debugging purposes.
    • alreadyClosed

      protected void alreadyClosed()
    • refCount

      public final int refCount()
      Returns the current reference count.
    • closeInternal

      protected abstract void closeInternal()
      Method that is invoked once the reference count reaches zero. Implementations of this method must handle all exceptions and may not throw any exceptions.
    • of

      public static AbstractRefCounted of(Runnable onClose)
      Construct an AbstractRefCounted which runs the given Runnable when all references are released.