Package io.netty.util.internal
Class ReferenceCountUpdater<T extends ReferenceCounted>
- java.lang.Object
-
- io.netty.util.internal.ReferenceCountUpdater<T>
-
public abstract class ReferenceCountUpdater<T extends ReferenceCounted> extends java.lang.ObjectCommon logic forReferenceCountedimplementations
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedReferenceCountUpdater()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static longgetUnsafeOffset(java.lang.Class<? extends ReferenceCounted> clz, java.lang.String fieldName)intinitialValue()booleanisLiveNonVolatile(T instance)private booleannonFinalRelease0(T instance, int decrement, int rawCnt, int realCnt)private intnonVolatileRawCnt(T instance)private static intrealRefCnt(int rawCnt)intrefCnt(T instance)booleanrelease(T instance)booleanrelease(T instance, int decrement)voidresetRefCnt(T instance)Resets the reference count to 1Tretain(T instance)Tretain(T instance, int increment)private Tretain0(T instance, int increment, int rawIncrement)private booleanretryRelease0(T instance, int decrement)voidsetRefCnt(T instance, int refCnt)An unsafe operation that sets the reference count directlyprivate static inttoLiveRealRefCnt(int rawCnt, int decrement)LikerealRefCnt(int)but throws if refCnt == 0private booleantryFinalRelease0(T instance, int expectRawCnt)protected abstract longunsafeOffset()protected abstract java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T>updater()
-
-
-
Method Detail
-
getUnsafeOffset
public static long getUnsafeOffset(java.lang.Class<? extends ReferenceCounted> clz, java.lang.String fieldName)
-
updater
protected abstract java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T> updater()
-
unsafeOffset
protected abstract long unsafeOffset()
-
initialValue
public final int initialValue()
-
realRefCnt
private static int realRefCnt(int rawCnt)
-
toLiveRealRefCnt
private static int toLiveRealRefCnt(int rawCnt, int decrement)LikerealRefCnt(int)but throws if refCnt == 0
-
nonVolatileRawCnt
private int nonVolatileRawCnt(T instance)
-
refCnt
public final int refCnt(T instance)
-
isLiveNonVolatile
public final boolean isLiveNonVolatile(T instance)
-
setRefCnt
public final void setRefCnt(T instance, int refCnt)
An unsafe operation that sets the reference count directly
-
resetRefCnt
public final void resetRefCnt(T instance)
Resets the reference count to 1
-
release
public final boolean release(T instance)
-
release
public final boolean release(T instance, int decrement)
-
tryFinalRelease0
private boolean tryFinalRelease0(T instance, int expectRawCnt)
-
nonFinalRelease0
private boolean nonFinalRelease0(T instance, int decrement, int rawCnt, int realCnt)
-
retryRelease0
private boolean retryRelease0(T instance, int decrement)
-
-