Print

Print


When you schedule something, the schedule (or the SimState's mini- 
schedule) holds onto that object until its event time has come up.   
Sometimes this isn't desirable.  For example, imagine if you wanted  
to schedule a window to be updated at a certain time, but someone  
might close the window before this time occurrs and you need to have  
the resources released.  You can do this by wrapping the steppable in  
a WeakSteppable, schedule the WeakSteppable, and then store the  
steppable in some instance variable in the window.  If the window is  
closed, the only thing left pointing to the window is the steppable.   
And the only things left pointing to the steppable are the window and  
the WeakSteppable holding the steppaable.  Since the WeakSteppable's  
reference to the steppable is weak, this means that the window and  
the steppable are the only things *really* left pointing to each  
other.  Which means they're candidates for garbage collection.

When they get garbage collected, the WeakSteppable's reference  
magically becomes null.  When the schedule later calls the  
WeakSteppable, nothing happens (because there's no window left).

This relies on the notion of Weak References, a concept introduced in  
Java 1.3 which you may want to read up on a bit for more info.

Sean

On Oct 25, 2007, at 7:34 PM, Alan Thomas wrote:

> I read about "schedule weakly," but I`m still not completely sure I
> understand it.  Could someone explain it?
>
> Thanks, Alan