public abstract class AbstractReferenceCounted extends Object implements ReferenceCountedTracer, ReferenceOwner
| Modifier and Type | Field and Description |
|---|---|
protected MonitorReferenceCounted |
referenceCounted |
protected static int |
WARN_COUNT |
protected static long |
WARN_NS |
INIT, TMP| Modifier | Constructor and Description |
|---|---|
protected |
AbstractReferenceCounted() |
protected |
AbstractReferenceCounted(boolean monitored) |
| Modifier and Type | Method and Description |
|---|---|
static void |
assertReferencesReleased() |
protected void |
backgroundPerformRelease() |
protected boolean |
canReleaseInBackground() |
void |
clearUsedByThread() |
StackTrace |
createdHere() |
static void |
disableReferenceTracing() |
static void |
enableReferenceTracing() |
protected abstract void |
performRelease() |
int |
refCount()
Returns the reference count for this resource.
|
int |
referenceId() |
void |
release(ReferenceOwner id)
Releases a resource.
|
void |
releaseLast(ReferenceOwner id)
Releases a resource and checks this is the last usage.
|
void |
reserve(ReferenceOwner id)
Reserves a resource or throws an Exception.
|
boolean |
reservedBy(ReferenceOwner owner)
Best effort check the owner has reserved it.
|
void |
reserveTransfer(ReferenceOwner from,
ReferenceOwner to) |
protected boolean |
threadSafetyCheck(boolean isUsed) |
void |
throwExceptionIfNotReleased() |
void |
throwExceptionIfReleased() |
@NotNull String |
toString() |
boolean |
tryReserve(ReferenceOwner id)
Tries to reserve a resource and returns if the resource could
be successfully reserved.
|
static void |
unmonitor(ReferenceCounted counted) |
void |
warnAndReleaseIfNotReleased() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitonReleasedreleaseLastreferenceName, temporaryprotected static final long WARN_NS
protected static final int WARN_COUNT
protected final transient MonitorReferenceCounted referenceCounted
protected AbstractReferenceCounted()
protected AbstractReferenceCounted(boolean monitored)
public static void enableReferenceTracing()
public static void disableReferenceTracing()
public static void assertReferencesReleased()
public static void unmonitor(ReferenceCounted counted)
public int referenceId()
referenceId in interface ReferenceOwnerpublic StackTrace createdHere()
createdHere in interface ReferenceCountedTracerpublic void throwExceptionIfNotReleased()
throws IllegalStateException
throwExceptionIfNotReleased in interface ReferenceCountedTracerIllegalStateExceptionprotected void backgroundPerformRelease()
protected boolean canReleaseInBackground()
protected abstract void performRelease()
throws IllegalStateException
IllegalStateExceptionpublic void reserve(ReferenceOwner id) throws IllegalStateException
ReferenceCountedEach invocation of this method increases the reference count by one.
reserve in interface ReferenceCountedid - unique id for this reserveIllegalStateException - if the resource has already been freed.
I.e. its reference counter has as some point reached zero.public void release(ReferenceOwner id) throws IllegalStateException
ReferenceCountedEach invocation of this method decreases the reference count by one.
release in interface ReferenceCountedid - unique id for the reserve to be releasedIllegalStateException - if the resource has already been freed.
I.e. its reference counter has as some point reached zero.public void releaseLast(ReferenceOwner id) throws IllegalStateException
ReferenceCountedEach invocation of this method decreases the reference count by one.
releaseLast in interface ReferenceCountedid - unique id for the reserve to be releasedIllegalStateException - if the resource has already been freed.
I.e. its reference counter has as some point reached zero.public boolean tryReserve(ReferenceOwner id) throws IllegalStateException, IllegalArgumentException
ReferenceCountedEach invocation of this method increases the reference count by one.
tryReserve in interface ReferenceCountedid - unique id for this reserveIllegalStateException - if the resource has already been freed.
I.e. its reference counter has as some point reached zero.IllegalArgumentExceptionpublic void reserveTransfer(ReferenceOwner from, ReferenceOwner to) throws IllegalStateException
reserveTransfer in interface ReferenceCountedIllegalStateExceptionpublic int refCount()
ReferenceCountedrefCount in interface ReferenceCountedpublic void throwExceptionIfReleased()
throws ClosedIllegalStateException
throwExceptionIfReleased in interface ReferenceCountedTracerClosedIllegalStateExceptionpublic void warnAndReleaseIfNotReleased()
throws ClosedIllegalStateException
warnAndReleaseIfNotReleased in interface ReferenceCountedTracerClosedIllegalStateExceptionpublic boolean reservedBy(ReferenceOwner owner) throws IllegalStateException
ReferenceCountedtrue if not sure.reservedBy in interface ReferenceCountedowner - to checkIllegalStateExceptionprotected boolean threadSafetyCheck(boolean isUsed)
throws IllegalStateException
IllegalStateExceptionpublic void clearUsedByThread()
Copyright © 2022. All rights reserved.