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.
Many thanks david jencks
