simtools.util
Class ListenerManager.ReferenceCountedPointer

java.lang.Object
  extended by java.lang.ref.Reference<T>
      extended by java.lang.ref.WeakReference
          extended by simtools.util.ListenerManager.ReferenceCountedPointer
Enclosing class:
ListenerManager

public class ListenerManager.ReferenceCountedPointer
extends java.lang.ref.WeakReference

This inner class is a Weak Reference using refcounting, as described in the note above. It is a static inner class because the ListenerManager reference would otherwise prevent the garbage-collector to destroy the ListenerManagers themselves. Unfortunately, a reference to the listener manager is still required, so as to make only one ReferenceQueue helper thread, and not one thread per ListenerManager. So, use a weak reference to the lisener manager too!


Field Summary
 java.lang.ref.WeakReference manager
           
 int refcount
           
 
Constructor Summary
ListenerManager.ReferenceCountedPointer(ListenerManager mgr, java.lang.Object o)
           
 
Method Summary
 
Methods inherited from class java.lang.ref.Reference
clear, enqueue, get, isEnqueued
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

refcount

public int refcount

manager

public java.lang.ref.WeakReference manager
Constructor Detail

ListenerManager.ReferenceCountedPointer

public ListenerManager.ReferenceCountedPointer(ListenerManager mgr,
                                               java.lang.Object o)