David Jencks wrote:
I've been working with the thread pools and PooledExecutor from concurrent a bit lately and understand how they work a little better than I used to:-)
I've changed the ThreadPool implementation to:
have a hard max size limit (and minSize == maxSize) have a Queue that all waiting tasks are put on. No task is ever executed in the calling thread.
I think this is the most appropriate policy for all thread pools in geronimo. I'd be interested in other opinions... I don't consider myself an expert in this.
I'm not sure if the current implementation ever gets smaller, since the minsize == maxsize. Having maxSize > minSize would involve writing a LinkedQueue subclass that can communicate with the PooledExecutor to determine if the pool size < maxSize. I'm reluctant to introduce this complication without evidence that it is needed.
Wow this is actually bringing back memories of IBM's MVS JES... :-)
Many thanks david jencks
