[visad] finally solved Visad offscreen mode memory problems
Stuart Maclean
stuart at apl.washington.edu
Mon Oct 29 10:45:38 MDT 2007
Curtis Rueden wrote:
> Hi Stuart,
>
> Thanks for pointing this out. I'll take a look at it in more detail
> later this week, but initially I do have one comment. Rather than
> using interrupts, a slightly cleaner way would be to use monitors with
> wait and notifyAll, like the code is already doing. It might take
> slightly longer than interrupt in certain cases (I'm not sure), but it
> gives you more control over the flow of the code. For example, the
> graphics context will always get properly disposed.
>
>
Hi Curtis, good point. I think I chose interrupts since they are not 'lost' like notifies can be. Thread.interrupt sets the
interrupt status on a Thread, a definite change in program state. Calls like Object.wait check this status (and reset it!), and
throw InterruptedException (IE) before/during the wait. I found the problem with just wait/notify is that using notify to halt
a thread relies on the wait having happened earlier, if not, you are stuck. So its a race condition. The interrupt approach is
actually similar to the CountdownLatch set to one, used as an 'event'.
But I do see your point re other objects in a bad state in the app. But is it not the responsibility of say a Graphics object
user to catch any IE, dispose of objects correctly and maybe re-throw the IE.
Your comments welcomed
Stuart
More information about the visad
mailing list