Hi >Gerhard Froehlich wrote: >>>>I have a question regarding StoreJanitorImpl. >>>>As I see in the source StoreJanitorImpl implements only >>>>Runnable. >>>>As I was using org.apache.cocoon.Main it seems that >>>>after all work is done StoreJanitorImpl stays running, >>>>this prevents org.apache.cocoon.Main to terminate even >>>>after the Cocoon.dispose() call. >>>> >>> >>>If this is the case, then we need to do one of two things: >>> >>>1) Have StoreJanitor implement Startable (allowing it to >>> be explicitly started and stopped, safely) >>>2) Call thread.setDaemon(true) if no cleanup is necessary. >>> >> #1 I will take a look. But I need some re-read of the avalon >> dev docs. >> #2 is already set > > >RE #2: JVM issues? I don't know yet, I have to take a closer look.... >RE #1: > >The way I typically do this is a case like this: > > >class StartableDemo implements Startable, Runnable >{ > private static boolean m_continue = true; > > public void start() { > new Thread(this).start(); > } > > public void run() { > while (m_continue) > { > // do important stuff > } > } > > public void stop() { > m_continue = false; > } >} > >In this case, MRUStore will start this up like: > > >initialize() >{ > this.janitor = new StartableDemo(); > this.janitor.start(); >} > >dispose() >{ > this.janitor.stop(); > this.janitor = null; // remove reference so it can be garbage collected >} Cool I put it on my todo list for this week. Hi out of work, but far away from getting bored ;)
Cheers Gerhard --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]