public abstract class AbstractReferenceCounted extends java.lang.Object implements ReferenceCounted
ReferenceCounted
.Modifier and Type | Field and Description |
---|---|
private int |
refCnt |
private static java.util.concurrent.atomic.AtomicIntegerFieldUpdater<AbstractReferenceCounted> |
refCntUpdater |
Constructor and Description |
---|
AbstractReferenceCounted() |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
deallocate()
Called once
refCnt() is equals 0. |
int |
refCnt()
Returns the reference count of this object.
|
boolean |
release()
Decreases the reference count by
1 and deallocates this object if the reference count reaches at
0 . |
boolean |
release(int decrement)
Decreases the reference count by the specified
decrement and deallocates this object if the reference
count reaches at 0 . |
private boolean |
release0(int decrement) |
ReferenceCounted |
retain()
Increases the reference count by
1 . |
ReferenceCounted |
retain(int increment)
Increases the reference count by the specified
increment . |
private ReferenceCounted |
retain0(int increment) |
protected void |
setRefCnt(int refCnt)
An unsafe operation intended for use by a subclass that sets the reference count of the buffer directly
|
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<AbstractReferenceCounted> refCntUpdater
private volatile int refCnt
public final int refCnt()
ReferenceCounted
0
, it means this object has been deallocated.refCnt
in interface ReferenceCounted
protected final void setRefCnt(int refCnt)
public ReferenceCounted retain()
ReferenceCounted
1
.retain
in interface ReferenceCounted
public ReferenceCounted retain(int increment)
ReferenceCounted
increment
.retain
in interface ReferenceCounted
private ReferenceCounted retain0(int increment)
public boolean release()
ReferenceCounted
1
and deallocates this object if the reference count reaches at
0
.release
in interface ReferenceCounted
true
if and only if the reference count became 0
and this object has been deallocatedpublic boolean release(int decrement)
ReferenceCounted
decrement
and deallocates this object if the reference
count reaches at 0
.release
in interface ReferenceCounted
true
if and only if the reference count became 0
and this object has been deallocatedprivate boolean release0(int decrement)
protected abstract void deallocate()
refCnt()
is equals 0.