Class ReferenceCounted<ReleaseHelper>

  • Direct Known Subclasses:
    RecordContext

    @Internal
    @ThreadSafe
    public abstract class ReferenceCounted<ReleaseHelper>
    extends Object
    An object that can be reference counted, the internal resource would be released when the reference count reaches zero. This class is designed to be high-performance, lock-free and thread-safe.
    • Constructor Detail

      • ReferenceCounted

        public ReferenceCounted​(int initReference)
    • Method Detail

      • retain

        public int retain()
      • tryRetain

        public int tryRetain()
        Try to retain this object. Fail if reference count is already zero.
        Returns:
        zero if failed, otherwise current reference count.
      • release

        public int release()
      • release

        public int release​(@Nullable
                           ReleaseHelper releaseHelper)
      • getReferenceCount

        public int getReferenceCount()
      • referenceCountReachedZero

        protected abstract void referenceCountReachedZero​(@Nullable
                                                          ReleaseHelper releaseHelper)
        A method called when the reference count reaches zero.