Gerhard Froehlich wrote: > Hi, > >>>Hi >>>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? 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 } -- "Those who would trade liberty for temporary security deserve neither" - Benjamin Franklin --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]