Ok. I called display.stopThreadPool() right after I called
display.destroy(). I ran my edited version of Rivers through
jdb and got the following exception:
java.lang.Error: Task queued after threads stopped
at visad.util.ThreadPool.queue(ThreadPool.java:214)
at visad.ActionImpl.run(ActionImpl.java:397)
at visad.util.ThreadPool$ThreadMinnow.run(ThreadPool.java:95)
java.lang.Error: Task queued after threads stopped
at visad.util.ThreadPool.queue(ThreadPool.java:214)
at visad.ActionImpl.run(ActionImpl.java:397)
at visad.util.ThreadPool$ThreadMinnow.run(ThreadPool.java:95)
Leah
On Fri, 15 Aug 2003, Bill Hibbard wrote:
> > I didn't find a 'suspend all' command. So, I executed 'threads'
> > followed by 'where all'. Here is the output:
>
> Thanks. You can stop the ActionThreads by calling:
>
> ActionImpl.stopThreadPool();
>
> But if you're going to construct more DisplayImpls or
> CellImpls, there's probably no point since those
> constructors will just create more ActionThreads.
>
> I don't know much about the other Threads.
>
> Good luck,
> Bill
>
> > main[1] threads
> > Group system:
> > (java.lang.ref.Reference$ReferenceHandler)0xe8 Reference Handler cond.
> > waiting (java.lang.ref.Finalizer$FinalizerThread)0xe7 Finalizer
> > cond. waiting (java.lang.Thread)0xe6 Signal
> > Dispatcher running
> > Group main:
> > (java.lang.Thread)0x1 main running
> > (at breakpoint)
> > (visad.util.ThreadPool$ThreadMinnow)0x194 ActionThread-0 cond.
> > waiting (visad.util.ThreadPool$ThreadMinnow)0x195 ActionThread-1
> > cond. waiting (visad.util.ThreadPool$ThreadMinnow)0x196
> > ActionThread-2 cond. waiting (visad.util.ThreadPool$ThreadMinnow)0x197
> > ActionThread-3 cond. waiting (visad.util.ThreadPool$ThreadMinnow)0x1aa
> > ActionThread-4 cond. waiting (java.lang.Thread)0x2a1
> > Thread-6 unknown
> >
> >
> > main[1] where all
> > Signal Dispatcher:
> > Finalizer:
> > [1] java.lang.Object.wait (native method)
> > [2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:111)
> > [3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:127)
> > [4] java.lang.ref.Finalizer$FinalizerThread.run (Finalizer.java:159)
> > Reference Handler:
> > [1] java.lang.Object.wait (native method)
> > [2] java.lang.Object.wait (Object.java:429)
> > [3] java.lang.ref.Reference$ReferenceHandler.run (Reference.java:115)
> > main:
> > [1] Rivers.main (Rivers.java:106)
> > ActionThread-0:
> > [1] java.lang.Object.wait (native method)
> > [2] java.lang.Object.wait (Object.java:429)
> > [3] visad.util.ThreadPool$ThreadMinnow.run (ThreadPool.java:128)
> > ActionThread-1:
> > [1] java.lang.Object.wait (native method)
> > [2] java.lang.Object.wait (Object.java:429)
> > [3] visad.util.ThreadPool$ThreadMinnow.run (ThreadPool.java:128)
> > ActionThread-2:
> > [1] java.lang.Object.wait (native method)
> > [2] java.lang.Object.wait (Object.java:429)
> > [3] visad.util.ThreadPool$ThreadMinnow.run (ThreadPool.java:128)
> > ActionThread-3:
> > [1] java.lang.Object.wait (native method)
> > [2] java.lang.Object.wait (Object.java:429)
> > [3] visad.util.ThreadPool$ThreadMinnow.run (ThreadPool.java:128)
> > ActionThread-4:
> > [1] java.lang.Object.wait (native method)
> > [2] java.lang.Object.wait (Object.java:429)
> > [3] visad.util.ThreadPool$ThreadMinnow.run (ThreadPool.java:128)
> > Thread-5:
> >
> >
> > main[1] step
> >
> >
> > Leah
> >
> >
>