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]

Reply via email to