public class MediaDisposer
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static interface |
MediaDisposer.Disposable
Common interface for objects that can be disposed of directly.
|
static interface |
MediaDisposer.ResourceDisposer
Common interface for objects that can dispose of other objects.
|
private static class |
MediaDisposer.ResourceDisposerRecord |
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.ref.Reference,MediaDisposer.Disposable> |
disposers |
private java.lang.ref.ReferenceQueue<java.lang.Object> |
purgatory |
private static MediaDisposer |
theDisposinator |
Modifier | Constructor and Description |
---|---|
private |
MediaDisposer() |
Modifier and Type | Method and Description |
---|---|
static void |
addDisposable(java.lang.Object referent,
MediaDisposer.Disposable disposable)
Registers a disposable object that will be disposed when the referent is
garbage collected.
|
static void |
addResourceDisposer(java.lang.Object referent,
java.lang.Object resource,
MediaDisposer.ResourceDisposer disposer)
Register a resource to be dispose of when the referent becomes collected.
|
private void |
disposerLoop() |
private static MediaDisposer |
disposinator() |
private void |
implAddDisposable(java.lang.Object referent,
MediaDisposer.Disposable disposer) |
private void |
implAddResourceDisposer(java.lang.Object referent,
java.lang.Object resource,
MediaDisposer.ResourceDisposer disposer) |
private void |
implRemoveResourceDisposer(java.lang.Object resource) |
static void |
removeResourceDisposer(java.lang.Object resource)
Remove ALL previously registered resource disposers associated with the
given resource.
|
private final java.lang.ref.ReferenceQueue<java.lang.Object> purgatory
private final java.util.Map<java.lang.ref.Reference,MediaDisposer.Disposable> disposers
private static MediaDisposer theDisposinator
public static void addResourceDisposer(java.lang.Object referent, java.lang.Object resource, MediaDisposer.ResourceDisposer disposer)
referent
- when this object is garbage collected, the resource will
be disposedresource
- generic object to be disposed, this is passed as-is as an
argument to the disposerdisposer
- resource disposer class instance that will be used to
dispose the provided resourcepublic static void removeResourceDisposer(java.lang.Object resource)
resource
- the resource that was previously registered,
equals()
is used to determine if it's the same object or notpublic static void addDisposable(java.lang.Object referent, MediaDisposer.Disposable disposable)
referent
- the object that the disposable object is associated withdisposable
- the object to be disposed when referent is collectedprivate static MediaDisposer disposinator()
private void disposerLoop()
private void implAddResourceDisposer(java.lang.Object referent, java.lang.Object resource, MediaDisposer.ResourceDisposer disposer)
private void implRemoveResourceDisposer(java.lang.Object resource)
private void implAddDisposable(java.lang.Object referent, MediaDisposer.Disposable disposer)