At 04:19  13/5/01 +0100, Paul Hammant wrote:
>How do other Avlalon projects
>refresh/handle the underlying Avalon jar files?

I have set it up so that Avalon has "install" targrets that install them
into a central location - "/opt/apps/cjan" for me. Then all my dependent
projects pick up the jars from there. I would really like to remove jars in
CVS eventually - though we will have to wait for cjan/jjan for that ;)

>> >scratchpad
>> >==========
>> >
>> >Is this code we're unsure about?  Is it designed to be move back to core
>> jars or consigned to the scrapheap?
>> 
>> Parts scrapheap (Primes/Circuit/DependencyGraph) unless there is a deman
>> for it. The other parts are waiting a rewrite (ie proxy/thread). Then there
>> is the "other" stuff that I don't know about or hasn't seen
deman/testing etc.
>
>I'm using ThreadPool.  I was a little confused for a while as it is
mentoined in BlockContext.

Heres a description of upcoming changes from another mail.

--------------------------------------------------------------
Unfortunately that doesn't cut it as usually you need to have Thread
implement a particular class so it replaces itself back in pool after it
has done a run() on it' client. The way I am just about to redesign the
Avalon thread pool is as follows

interface ThreadPool
{
  void executeAndWait( Runnable work ) throws ThreadException;
  void executeAndWait( Executable work ) throws ThreadException;

  ThreadControl execute( Runnable work );
  ThreadControl execute( Executable work );
}

class ThreadException
{
...
  Throwable getRootCause() { ... }
...
}

interface ThreadControl
{
  void interupt() throws Exception;
  boolean isValid();
  boolean isFinished();
  Throwable getThrowable();
}

//Method gets called for thread hook right before you dispatch work
interface ThreadHook
{
  void setupThread() {}
}

executeAndWait is useful when you are using the pool to cross
thread/protection boundaries (Very very useful in writing software like
tomcat/james/Avalon-phoenix). 

execute returns a control so you can control all the important features of
thread directly.

ThreadHook.setupThread() is called right before a set of work is dispatched
and usually used to set name of thread, contextClassLoader and any other
thread local variables.

All other thread features (ie priority, whether thread is a daemon thread,
etc) are determined by pool.

I haven't found any places where the above design won't work - what do you
think about it?
--------------------------------------------------------------

Cheers,

Pete

*-----------------------------------------------------*
| "Faced with the choice between changing one's mind, |
| and proving that there is no need to do so - almost |
| everyone gets busy on the proof."                   |
|              - John Kenneth Galbraith               |
*-----------------------------------------------------*


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to