private final Worker getWorker()
    {
        try
        {
            return(Worker) pool.pop();
        }
        catch(EmptyStackException x)
        {
            int maxThreads = XmlRpc.getMaxThreads();
            if (workers < maxThreads)
            {
                workers += 1;
                if (workers >= maxThreads * .95)
                {
                    logger.warn("95% of XML-RPC server threads in use");
                }
                return new Worker();
            }
            throw new RuntimeException("System overload");
        }
    }